当前位置: 代码迷 >> C# >> C#模拟提交数据时,接收数据时乱码的解决方法
  详细解决方案

C#模拟提交数据时,接收数据时乱码的解决方法

热度:36   发布时间:2016-05-05 04:23:10.0
C#模拟提交数据时,接收数据时乱码的
string URL = "http://202.203.222.202/cas/login?service=http%3A%2F%2F202.203.222.202%2Fmyspace%2Freader%2Findex";
            HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest;
            HttpWebResponse res = (HttpWebResponse)request.GetResponse();
            string getCookie = res.Headers.Get("Set-Cookie");
            CookieContainer cookieContainer = new CookieContainer();
            for (int i = 0; i < getCookie.Split(';').Length; i++)
            {
                if (getCookie.Split(';')[i].Contains("JSESSIONID"))
                {
                    string a = getCookie.Split(';')[i].Split('=')[1];
                    cookieContainer.Add(new System.Uri("http://202.203.222.202/cas/login?service=http%3A%2F%2F202.203.222.202%2Fmyspace%2Freader%2Findex"), new Cookie("JSESSIONID", a));
                }
            }
            cookieContainer.Add(new System.Uri("http://202.203.222.202/cas/login?service=http%3A%2F%2F202.203.222.202%2Fmyspace%2Freader%2Findex"), new Cookie("checkCookies", "1"));
            cookieContainer.Add(new System.Uri("http://202.203.222.202/cas/login?service=http%3A%2F%2F202.203.222.202%2Fmyspace%2Freader%2Findex"), new Cookie("userNo", "v534666"));
            Stream stream1 = res.GetResponseStream();
            StreamReader sr = new StreamReader(stream1, Encoding.UTF8);
            string htmlText = sr.ReadToEnd();
            stream1.Close();
            sr.Close();
            res.Close();
            string lt = GetHiddenField(htmlText, "lt");
            string execution = GetHiddenField(htmlText, "execution");
            string postString = "username=12014001062&password=14001062&lt=" + lt + "&execution=" + execution + "&_eventId=submit&submit=%E7%99%BB%E5%BD%95";
            HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(URL);
            request1.Method = "POST";
            request1.KeepAlive = true;
            request1.Accept = "*/*";
            request1.Referer = "http://202.203.222.202/cas/login?service=http://202.203.222.202/myspace/reader/index";
            request1.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:36.0) Gecko/20100101 Firefox/36.0";
            request1.Headers.Add("Accept-Encoding", "gzip,deflate");
            request1.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
            request1.Headers.Add("charset", "utf-8");
            request1.ContentType = "application/x-www-form-urlencoded";
            request1.CookieContainer = cookieContainer;
            request1.ContentLength = postString.Length;
            byte[] bytes = Encoding.UTF8.GetBytes(postString);
            Stream stream2 = request1.GetRequestStream();
            stream2.Write(bytes, 0, bytes.Length);
            stream2.Close();
            HttpWebResponse res1;
            try
            {
                res1 = (HttpWebResponse)request1.GetResponse();
            }
            catch (WebException ex)
            {
                res1 = (HttpWebResponse)ex.Response;
            }            
            Stream dataStream = res1.GetResponseStream();// response.GetResponseStream();
            StreamReader sr1 = new StreamReader(dataStream, Encoding.UTF8);
            htmlText = sr1.ReadToEnd();
            webBrowser1.DocumentText = htmlText;
            dataStream.Close();
            res1.Close();
            sr1.Close();   
接收时,html时乱码的。这是什么问题?求大神帮帮我
------解决思路----------------------
乱码都是Encoding问题,你模拟时应该指定与网页一致的Encoding
------解决思路----------------------
引用:
乱码都是Encoding问题,你模拟时应该指定与网页一致的Encoding

LZ首先要搞清楚什么是乱码,寻根问底才能找到问题的根源!
------解决思路----------------------
request1.Headers.Add("Accept-Encoding", "gzip,deflate"); 你这里用gzip了
那下面接收回来的字节流要先用Gzip解码后,再ReadToEnd();
  相关解决方案