如何在WebBrowser控件中获取post参数

 我来答
匿名用户
推荐于2016-05-18
展开全部
如何在WebBrowser控件中获取post参数?就像获取cookie一样。
WebBrowser本身有没有办法?
如果没有,能不能通过其它办法?就像httplook,HttpSniffer一样截取http协议包,然后分析,有

没有这方面的例子?估计要用到API,但不知道怎么样实现的。

网页与应用程序的交互不外乎是网页上点击某链接,或通过其它途径,比如表单提交等,使浏览器

导航至新的链接,所以我通过BeforeNavigate2这个事件来,该事件有flags、headers、postData、

targetFrameName、uRL等属性,足够我们进行处理。这样我们程序就好像一个WebServer,可以处理

网页上的链接、提交的表单等等。然后把使浏览器导航至处理后产生的结果网页。
  又在网上看到有人用System.Runtime.InteropServices.Expando.IExpando:
  mshtml.HTMLDocumentClass doc2=(mshtml.HTMLDocumentClass)webBrowser.Document;
  System.Runtime.InteropServices.Expando.IExpando ex=

(System.Runtime.InteropServices.Expando.IExpando)doc2;
  System.Reflection.PropertyInfo piform1=ex.AddProperty( "Form1 ");
  piform1.SetValue(doc2,this,null);
  这样,在网页中的document.Form1就是这个WinForm的Control了。你可以用脚本来调用Form1!

这也不失为一个极妙的方法。

----------------------------

如何获得webBrowser中POST的数据
http://msdn2.microsoft.com/zh-cn/library/system.windows.forms.webbrowser.document.aspx

//引用 shdocvw.dll
(this.webbrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow2 += new

SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(NewWindow2);

----------------------------------------
System.Web.HttpUtility.UrlEncode(viewState);

// 将提交的字符串数据转换成字节数组
byte[] postData = Encoding.ASCII.GetBytes(postString);
byte[] bytes = Encoding.Default.GetBytes(Parameters);

----------------------------------------

HttpWebRequest发送自定义POST请求

平时用浏览器看网页的时候,点击一下submit按钮的时候其实就是给服务器发送了一个POST请求。

但是如何在自己的C#程序里面实现类似的功能呢?本文给出了一个简单的范例,可以实现类似的和

web server之间的POST通讯。通过程序发送POST的过程如下所示:
1. 创建httpWebRequest对象
HttpWebRequest不能直接通过new来创建,只能通过WebRequest.Create(url)的方式来获得。
WebRequest是获得一些列应用层协议对象的一个统一的入口(工厂模式),它根据参数的协议来确

定最终创建的对象类型。所以我们的程序里面有一个对返回对象的类型进行测试的过程。
2. 初始化HttpWebRequest对象
这个过程提供一些http请求常用的属性:agentstring,contenttype等其中agentstring比较有意思

,它是用来识别你用的浏览器名字的,通过设置这个属性你可以欺骗服务器你是一个IE,firefox甚

至是mac里面的safari。很多认真设计的网站都会根据这个值来返回对用户浏览器特别优化过的代码


3. 附加要POST给服务器的数据到HttpWebRequest对象
附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象

提供的一个stream里面。
4. 读取服务器的返回信息
读取服务器返回的时候,要注意返回数据的encoding。如果我们提供的解码类型不对会造成乱码。

比较常见的是utf-8和gb2312之间的混淆,据我测试,国内的主机一般都是gb2312编码的。一般设计

良好的网站会把它编码的方式放在返回的http header里面,但是也有不少网站根本没有,我们只能

通过一个对返回二进制值的统计方法来确定它的编码方式。
------------------------------------------

基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送

响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协

议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作

为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以

及可能的实体内容。

---------------------------------
POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet

的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用

户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,

而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
pop3是接收电子邮件协议,属于TCP/IP协议族中的成员。 smtp是发送电子邮件协议。 当你使用

Email时就离不开他们
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式