您的位置:首页 > 编程语言 > VB

VB使用WebBrowser控件POST数据

2013-03-21 12:13 483 查看
用WebBrowser控件Post数据

2010年2月24日星期三 时间: 上午12:29 发贴者 Jing
Jiang



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

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

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

其中postData为HTTP POST 数据,例如窗体数据。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数据而自动登陆的话只需要步骤:

String PostData="__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);

string header = "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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: