
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);
0 评论:
发表评论