VB使用WebBrowser控件POST数据

用WebBrowser控件Post数据

使用WebBrowser控件可以在Windows窗体应用程序中承载网页以及支持浏览器的其他文档。例如,可以使用WebBrowser控件在应用程序中提供基于HTML的集成用户帮助或Web浏览功能。此外,还可以使用WebBrowser控件向Windows窗体客户端应用程序添加基于Web的现有控件。

WebBrowser的Navigate函数提供了向网页Post数据的功能:

publicvoidNavigate(stringurlString,stringtargetFrameName,byte[]postData,stringadditionalHeaders) 将指定的统一资源定位符(URL)处的文档加载到WebBrowser控件中,使用指定HTTP数据请求该文档并替换具有指定名称的网页框架的内容

其中postData为HTTPPOST数据,例如窗体数据。additionalHeaders要添加到默认标头中的HTTP标头。一般Http表头设为"Content-Type:application/x-www-form-urlencoded"即可.

如果要正确地向网页Post数据,并须使用以上两个参数.登陆的Post数据可以通过Fiddler监测获得,如下图:

如变为字符则格式如下:"__VIEWSTATE=%2FwEPDwULLTExNTc2NTI3OTlkZFQGow3nzBFSYeWWyfo%2FOEXT8w5j&UserName=admin&Password=admin123&AuthenButton=%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95&__EVENTVALIDATION=%2FwEWBALUudTOCwKvruq2CALSxeCRDwKGkaOOC8PpQ8Wk8rGROWhMJioW342WQkVO"

则现在如果要WebBrowser打开一个登陆页面,但是向网页Post数据而自动登陆的话只需要步骤:

StringPostData="__VIEWSTATE=%2FwEPDwULLTExNTc2NTI3OTlkZFQGow3nzBFSYeWWyfo%2FOEXT8w5j&UserName=admin&Password=admin123&AuthenButton=%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95&__EVENTVALIDATION=%2FwEWBALUudTOCwKvruq2CALSxeCRDwKGkaOOC8PpQ8Wk8rGROWhMJioW342WQkVO";

byte[]b;

b=System.Text.Encoding.UTF8.GetBytes(PostData);

stringheader="Content-Type:application/x-www-form-urlencoded";

WebBrowser.Navigate("http://****/login.aspx","",b,header);

VB使用WebBrowser控件POST数据:

Private Sub Form_Load()
ReDim aByte(0) As Byte
PackBytes aByte(),"id=111&ps=222"
WebBrowser1.Navigate "http://127.0.0.1:90/test.cgi",aByte,"Content-Type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)
End Sub

Private Sub PackBytes(ByteArray() As Byte,ByVal PostData As String) ReDim ByteArray(iNewBytes) For i = 0 To iNewBytes ch = Mid(PostData,i + 1,1) If ch = Space(1) Then ch = "+" End If Debug.Print ch,Asc(ch) ByteArray(i) = Asc(ch) Next End Sub

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 --------------------------...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, t...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integ...