C#的HttpWebRequest编程,支持带ViewState的网页POST请求

 1 staticprivatestring SearchURL(string id)
 2 {
 3 try
 4 {
 5 //Get the ViewState and EventValidation
 6 HttpWebRequest request = WebRequest.Create(URI) as HttpWebRequest;
 7 request.Method ="GET";
 8 request.KeepAlive =false;
 9 
10 //Get the response
11 HttpWebResponse response = request.GetResponse() as HttpWebResponse;
12 System.IO.Stream responseStream = response.GetResponseStream();
13 System.IO.StreamReader reader =new System.IO.StreamReader(responseStream, Encoding.UTF8);
14 string srcString = reader.ReadToEnd();
15 
16 //Get the ViewState
17 string viewStateFlag ="id=\"__VIEWSTATE\" value=\"";
18 int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
19 int j = srcString.IndexOf("\"", i);
20 string viewState = srcString.Substring(i, j - i);
21 
22 //Get the ViewState
23 string EventValidationFlag ="id=\"__EVENTVALIDATION\" value=\"";
24 i = srcString.IndexOf(EventValidationFlag) + EventValidationFlag.Length;
25 j = srcString.IndexOf("\"", i);
26 string eventValidation = srcString.Substring(i, j - i);
27 
28 //Compose the URL
29 viewState = Uri.EscapeDataString(viewState);
30 eventValidation = Uri.EscapeDataString(eventValidation);
31 string strSearch = Uri.EscapeDataString("查询");
32 
33 string formatString ="__VIEWSTATE={0}&__EVENTVALIDATION={1}&TextBox1={2}&Button1={3}";
34 string postString =string.Format(formatString, viewState, eventValidation, id,strSearch);
35 
36 //Change to byte[]
37 byte[] postData = Encoding.ASCII.GetBytes(postString);
38 
39 //Compose the new request
40 request = WebRequest.Create(URI) as HttpWebRequest;
41 request.Method ="POST";
42 request.KeepAlive =false;
43 request.ContentType ="application/x-www-form-urlencoded";
44 request.ContentLength = postData.Length;
45 
46 System.IO.Stream outputStream = request.GetRequestStream();
47 outputStream.Write(postData, 0, postData.Length);
48 outputStream.Close();
49 
50 //Get the new response
51 response = request.GetResponse() as HttpWebResponse;
52 responseStream = response.GetResponseStream();
53 reader =new System.IO.StreamReader(responseStream);
54 srcString = reader.ReadToEnd();
55 return srcString;
56 }
57 catch (WebException we)
58 {
59 Console.WriteLine("Communication error,"+ we.Message +" please check your connectivity and try again.", "Error");
60 }
61 catch
62 {
63 Console.WriteLine("Unknow error.", "Error");
64 }
65 returnnull;
66 }
View Code

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值