使用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