用httpwebrequest和网页交互,首先post到login页面,可以登陆,再用sniffer跟踪,得到需要post得数据,再向登陆后得一个页面post数据,可是getresponse得时候说内部服务器错误(500),查阅了很多资料没找到。请各位大侠帮忙
CookieContainer cookie = new CookieContainer();
            string PostData = "__VIEWSTATE=dDwtNjMzMTkyMjIxOzs%2BKynjHA9NUemN0NbJdLlTGyFrUQs%3D&UserID=tjnmc%5Cchaihua&UserPass=Tjnmc%232006&ButtonSubmit=+";
            string url = "http://10.142.13.61/website/default.aspx";
            byte[] buffer;
            buffer = Encoding.UTF8.GetBytes(PostData);
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "POST";
            req.KeepAlive = true;
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = buffer.Length;
            req.CookieContainer = cookie; req.Timeout = 50000;
            using (Stream reqst = req.GetRequestStream())
            {
                reqst.Write(buffer, 0, buffer.Length);
                reqst.Close();
            }
            using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
            {
                string result;
                using (Stream resst = res.GetResponseStream())
                {
                    result = new StreamReader(resst, Encoding.Default).ReadToEnd();
                    resst.Close();
                }
                Console.WriteLine(result);                
            }
            
            PostData = ""//太长了我就不写了;
           
            url = "http://10.142.13.61/website/system/condition/selchoice.aspx?int_id=17071&url=pmreport/rep2002/GPRS性能报表";           
            buffer = Encoding.UTF8.GetBytes(PostData);
            HttpWebRequest req1; req1 = (HttpWebRequest)WebRequest.Create(url);
            req1.Method = "POST"; req1.Timeout = 50000;                                
            req1.ContentType = "application/x-www-form-urlencoded";
            req1.ContentLength = buffer.Length;
            req1.CookieContainer = cookie;
            
            try
            {
                req.ContentLength = buffer.Length;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            using (Stream reqst = req1.GetRequestStream())
            {
                reqst.Write(buffer, 0, buffer.Length);            }
            HttpWebResponse resp = null; Stream ress = null; StreamReader reader = null;
            try
            {
               
                using (HttpWebResponse res = (HttpWebResponse)req1.GetResponse())
                {
                    string result;
                    Console.WriteLine(req1.RequestUri.ToString());
                    using (Stream resst = res.GetResponseStream())
                    {
                        result = new StreamReader(resst, Encoding.Default).ReadToEnd();
                    }
                    Console.WriteLine(result);
                }
            }            catch (WebException ex)
            {
                
                Console.WriteLine(ex.ToString());
            }

解决方案 »

  1.   

    给你段代码:
           public static string GetPage(string url, string postData, string encodeType, out string err)
            {
                Stream outstream = null;
                Stream instream = null;
                StreamReader sr = null;            HttpWebResponse response = null;
                HttpWebRequest request = null;
                Encoding encoding = Encoding.GetEncoding(encodeType);
                byte[] data = encoding.GetBytes(postData);
                // 准备请求...
                try
                {
                    // 设置参数
                    request = WebRequest.Create(url + postData) as HttpWebRequest;                request.CookieContainer = new CookieContainer();
                    request.AllowAutoRedirect = true;
                    request.Method = "POST";
                    //request.ContentType = "application/x-www-form-urlencoded";
                    //request.ContentLength = data.Length;
                    //outstream = request.GetRequestStream();
                    //outstream.Write(data, 0, data.Length);
                    //outstream.Close();
                    //发送请求并获取相应回应数据
                    response = request.GetResponse() as HttpWebResponse;                foreach (Cookie cookie in response.Cookies)
                    {
                        string str = cookie.Name + " : " + cookie.Value + "\n";
                    }                instream = response.GetResponseStream();
                    sr = new StreamReader(instream, encoding);
                    string content = sr.ReadToEnd();
                    err = string.Empty;
                    return content;
                }
                catch (Exception ex)
                {
                    err = ex.Message;
                    return string.Empty;
                }
            }
    调用方法:
    string xml = WebCatcher.GetPage(serviceUrl, postData, "gb2312", out err);