C#通过WebClient提交页面表单二

发布时间:2010年07月01日      浏览次数:331 次
C#提交表单
//要提交表单的URI字符串。
string url = http://www.xxx.com/Guest.asp ;
//要提交的字符串数据。
string postString = "userName=test&Title=test&Content=test " ;
//初始化WebClient
WebClient webClient = new WebClient();
webClient.Headers.Add( " Content-Type " , " application/x-www-form-urlencoded " );
//将字符串转换成字节数组
byte [] postData = Encoding.ASCII.GetBytes(postString);
//ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
//Encoding.GetEncoding("GB2312").GetBytes(postString)
//上传数据,返回页面的字节数组
byte [] responseData = webClient.UploadData(uriString, " POST " , postData);
//ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
//Encoding.GetEncoding("GB2312").GetString(responseData)
//返回的将字节数组转换成字符串(HTML)
string srcString = Encoding.UTF8.GetString(responseData);
srcStrinig 就是提交表单后所返回页面的HTML。
提交ASP.NET表单时,必须给“__VIEWSTATE”和“__EVENTVALIDATION”赋值。“__VIEWSTATE”和“__EVENTVALIDATION”的值可以通过在要提交的页面上按右键“查看源文件”中找到。
//提交按钮的文本
string submitButton = "登录";
//页面的 VeiwState(可以通过IE打开页面,右键“查看源文件”取得)
string viewState = " /wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0= " ;
//页面的 EventValidation(可以通过IE打开页面,右键“查看源文件”取得)
string eventValidation = " /wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc " http://msnpiki.msnfanatic.com/index.php/Main_Page-->
OR: rgb(192,192,192)">;
submitButton = System.Web.HttpUtility.UrlEncode(submitButton);
viewState = System.Web.HttpUtility.UrlEncode(viewState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
访问第一页时,服务器会返回一个Cookies值,打开第二页时要向服务器提交访问
第一页时返回的Cookies,才能打开页面。可以这样解决:
打开第一页时:
byte[] buff=webclient.DownloadData(url);
string cookie=webclient.ResponseHeaders.Get("Set-Cookie");
向第二页发送请求时:
webclient.Headers.Add("Cookie", cookie);
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!