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

 

你可能感兴趣的:(request)