|
填写和提交以上表单的代码如下:
// 要提交表单的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); &n [1] [2] [3] [4] 下一页 |