C#通過WebClient POST提交表單
C#提交表單
// 要提交表單的URI字符串。 string url= http://www.baiduhome.net/code/; // 要提交的字符串數據。 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"; 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");
向第二頁發送請求時需要將Cookie帶到請求頭中。
webclient.Headers.Add("Cookie", cookie);
本文由用戶 wufflina 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!