填寫和提交以上表單的代碼如下:
// 要提交表單的URI字符串。
string uriString = "http://www.xxx.com/Login.ASPx";
// 要提交的字符串數據。
string postString = "userName=user1&password=passWord1";
// 初始化WebClIEnt
WebClient webClient = new WebClIEnt();
webClIEnt.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
// 將字符串轉換成字節數組
byte[] postData = Encoding.ASCII.GetBytes(postString);
// 上傳數據,返回頁面的字節數組
byte[] responseData = webClIEnt.UploadData(uriString, "POST", postData);
// 返回的將字節數組轉換成字符串(Html)
string srcString = Encoding.UTF8.GetString(responseData);
srcStrinig 就是提交表單後所返回頁面的Html。怎麼樣,很簡單吧。
但是,以上代碼可以提交ASP或JSP生成的表單,卻不能提交ASP.NET表單。因為提交ASP.Net表單時,必須給“__VIEWSTATE”和 “__EVENTVALIDATION”賦值。“__VIEWSTATE”和“__EVENTVALIDATION”的值可以通過在要提交的頁面上按右鍵 “查看源文件”中找到。如下:
id="__VIEWSTATE" value="/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0="
id="__EVENTVALIDATION" value="/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc"
通過“查看源文件”得到的“__VIEWSTATE”和“__EVENTVALIDATION”的值還不能直接提交給表單,還需要轉換成URL編碼的字符串。
viewState = System.Web.HttpUtility.UrlEncode(vIEwState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);