webbrowser获取post数据的问题
场景:
用webbrowser浏览一个网页,网页向网站提交(POST)了一些信息,我想在其提交到网站前对这些POST数据在浏览器侧进行截获
在网上找了帖子,地址如下:
http://hi.baidu.com/gookings/blog/item/12acbd4435056796b2b7dcd3.html
参照这个例子,新建一个Form1,在Form1中加了一个webbrowser1并按照要求完成了下面3步
1、在 windows/system32 目录下找到 shdocvw.dll 这个动态库,将其添加到引用中
2、在 Form1_Load 中添加如下语句
SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
wb.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2);
3、添加如下成员函数
private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags,
ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]);
}
在运行时候,发现 SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance; 这句执行后,wb是null,然后后面的语句报错,是我那里操作不对?
------解决方案--------------------操作webbrowser 跟操作网页在后台上面讲 区别不是很大
你试一试 重写
------解决方案--------------------本帖最后由 caozhy 于 2011-04-30 20:17:28 编辑
.NET内置了WebBrowser控件。不需要引用shdocvw.dll。
lz在工具箱里面找找。
------解决方案--------------------SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
wb.BeforeNavigate2 += new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2);
private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags,ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]);
richTextBox1.Text += postDataText;
richTextBox1.Text += "OK";
}
我是这样做的,wb不为空,但是WebBrowser_BeforeNavigate2也没有触发。
为知为什么,楼下高手解答。