HttpWebRequest支持带ViewState的网页POST请求

    技术2026-06-16  5

    static private string SearchURL(string id)

    {   try

      {                //Get the ViewState and EventValidation                HttpWebRequest request = WebRequest.Create(URI) as HttpWebRequest;                request.Method = "GET";                request.KeepAlive = false;                //Get the response                HttpWebResponse response = request.GetResponse() as HttpWebResponse;                System.IO.Stream responseStream = response.GetResponseStream();                System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);                string srcString = reader.ReadToEnd();                //Get the ViewState                string viewStateFlag = "id=/"__VIEWSTATE/" value=/"";                int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;                int j = srcString.IndexOf("/"", i);                string viewState = srcString.Substring(i, j - i);                //Get the ViewState                string EventValidationFlag = "id=/"__EVENTVALIDATION/" value=/"";                i = srcString.IndexOf(EventValidationFlag) + EventValidationFlag.Length;                j = srcString.IndexOf("/"", i);                string eventValidation = srcString.Substring(i, j - i);                //Compose the URL                viewState = Uri.EscapeDataString(viewState);                eventValidation = Uri.EscapeDataString(eventValidation);                string strSearch = Uri.EscapeDataString("查询");                string formatString = "__VIEWSTATE={0}&__EVENTVALIDATION={1}&TextBox1={2}&Button1={3}";                string postString = string.Format(formatString, viewState, eventValidation, id,strSearch);                //Change to byte[]                byte[] postData = Encoding.ASCII.GetBytes(postString);                //Compose the new request                request = WebRequest.Create(URI) as HttpWebRequest;                request.Method = "POST";                request.KeepAlive = false;                request.ContentType = "application/x-www-form-urlencoded";                request.ContentLength = postData.Length;                System.IO.Stream outputStream = request.GetRequestStream();                outputStream.Write(postData, 0, postData.Length);                outputStream.Close();                //Get the new response                response = request.GetResponse() as HttpWebResponse;                responseStream = response.GetResponseStream();                reader = new System.IO.StreamReader(responseStream);                srcString = reader.ReadToEnd();                return srcString;            }            catch (WebException we)            {                Console.WriteLine("Communication error," + we.Message + " please check your connectivity and try again.", "Error");            }            catch            {                Console.WriteLine("Unknow error.", "Error");            }            return null;        }

    最新回复(0)