try
{
// 要提交表单的URI字符串。
string uriString = " http://localhost:1165/WebTest/MyLogin.aspx " ;
///
// 打开页面
///
WebClient webClient = new WebClient();
byte [] responseData = webClient.DownloadData(uriString);
string srcString = Encoding.UTF8.GetString(responseData);
///
// 填写页面并提交
///
webClient = new WebClient();
webClient.Headers.Add( " Content-Type " , " application/x-www-form-urlencoded " );
// 获取页面的 VeiwState
string viewStateFlag = " id=\ " __VIEWSTATE\ " value=\ "" ;
int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
int j = srcString.IndexOf( " \ "" ,i);
string viewState = srcString.Substring(i, j - i);
// 获取页面的 EventValidation
string eventValidationFlag = " id=\ " __EVENTVALIDATION\ " value=\ "" ;
i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
j = srcString.IndexOf( " \ "" , i);
string eventValidation = srcString.Substring(i, j - i);
// 提交按钮的文本
string submitButton = " 登录 " ;
viewState = System.Web.HttpUtility.UrlEncode(viewState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
submitButton = System.Web.HttpUtility.UrlEncode(submitButton);
// 要提交的字符串数据。格式形如:user=uesr1&password=123
string postString = " userName=1&password=1 " + " &loginButton= " + submitButton + " &__VIEWSTATE= " + viewState + " &__EVENTVALIDATION= " + eventValidation;
// 将字符串转换成字节数组
byte [] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
responseData = webClient.UploadData(uriString, " POST " , postData);
// 将返回的将字节数组转换成字符串(HTML);
// ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
// Encoding.GetEncoding("GB2312").GetString(responseData)
srcString = Encoding.UTF8.GetString(responseData);
///
// 分析返回的页面
///
//
}
catch (WebException we)
{
string msg = we.Message;
}
使用WebClient自动填写并提交ASP.NET页面表单的完整源代码:
AutoPost.rar
{
// 要提交表单的URI字符串。
string uriString = " http://localhost:1165/WebTest/MyLogin.aspx " ;
///
// 打开页面
///
WebClient webClient = new WebClient();
byte [] responseData = webClient.DownloadData(uriString);
string srcString = Encoding.UTF8.GetString(responseData);
///
// 填写页面并提交
///
webClient = new WebClient();
webClient.Headers.Add( " Content-Type " , " application/x-www-form-urlencoded " );
// 获取页面的 VeiwState
string viewStateFlag = " id=\ " __VIEWSTATE\ " value=\ "" ;
int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
int j = srcString.IndexOf( " \ "" ,i);
string viewState = srcString.Substring(i, j - i);
// 获取页面的 EventValidation
string eventValidationFlag = " id=\ " __EVENTVALIDATION\ " value=\ "" ;
i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
j = srcString.IndexOf( " \ "" , i);
string eventValidation = srcString.Substring(i, j - i);
// 提交按钮的文本
string submitButton = " 登录 " ;
viewState = System.Web.HttpUtility.UrlEncode(viewState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
submitButton = System.Web.HttpUtility.UrlEncode(submitButton);
// 要提交的字符串数据。格式形如:user=uesr1&password=123
string postString = " userName=1&password=1 " + " &loginButton= " + submitButton + " &__VIEWSTATE= " + viewState + " &__EVENTVALIDATION= " + eventValidation;
// 将字符串转换成字节数组
byte [] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
responseData = webClient.UploadData(uriString, " POST " , postData);
// 将返回的将字节数组转换成字符串(HTML);
// ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
// Encoding.GetEncoding("GB2312").GetString(responseData)
srcString = Encoding.UTF8.GetString(responseData);
///
// 分析返回的页面
///
//
}
catch (WebException we)
{
string msg = we.Message;
}
相关文章: 使用WebClient自动填写并提交ASP.NET页面表单
在C#中使用正则表达式自动匹配并获取所需要的数据
本文地址: http://www.cnblogs.com/anjou/archive/2007/03/07/667253.html