当前位置:编程学习 > C#/ASP.NET >>

急!搞了我一夜还是不行!GetResponseStream()返回乱码!怎么修改encoding都不成!求老师们帮帮忙!

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
namespace alvvtest
{
    class Program
    {
        static void Main(string[] args)
        {
            string postzf = "pageindex=1";
            string url = "http://www.alivv.com/ajax/Alivv.AjaxRun.WebSiteAjax,Alivv.AjaxRun.ashx?_method=BuyerWebSiteList&_session=r";

            
                HttpWebRequest newqq = null;
                HttpWebResponse newfh = null;
             

                    System.Net.ServicePointManager.Expect100Continue = false;
                    Uri newurl = new Uri(url);
                    newqq = (HttpWebRequest)WebRequest.Create(newurl);
                    string data = postzf;
                    newqq.Host = "www.alivv.com";
                    newqq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 2.0.50727; CIBA)";
                    newqq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                    newqq.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
                    newqq.Headers.Add("Accept-Encoding", "gzip, deflate");
                    newqq.Headers.Add("DNT", "1");
                    newqq.ContentType = "text/plain; charset=UTF-8";

                    newqq.Referer = "http://www.alivv.com/links_gd.html";

                    newqq.CookieContainer = new CookieContainer() ;
                    newqq.Accept = "*/*";
                    newqq.Method = "POST";
                    newqq.Timeout = 60000;
                    //newqq.KeepAlive = true;  

                    //newqqt.AllowAutoRedirect = true;
                    byte[] byteArray = Encoding.UTF8.GetBytes(data);
                    Stream stream = newqq.GetRequestStream();

                    stream.Write(byteArray, 0, byteArray.Length);
                    stream.Close();
                    newfh = (HttpWebResponse)newqq.GetResponse();
                    StreamReader sr = new StreamReader(newfh.GetResponseStream(), Encoding.UTF8);
                    string fanhuizhi = sr.ReadToEnd();

                
            
        }
    }
}


最后的fanhuizhi是乱码不管怎么修改encoding都不行

目前我发现在头协议当中有一句:

 newqq.Headers.Add("Accept-Encoding", "gzip, deflate");

难道说信息流通过压缩了?

还有就是post部分的代码是否正确呢?希望老师们帮我看一下,被这个问题搞死了!

附上正常返回的值:
[img=http://social.msdn.microsoft.com/Forums/getfile/157060][/img] --------------------编程问答-------------------- 这个URL 打不开. --------------------编程问答--------------------  HttpWebResponse WebResponse = (HttpWebResponse)Http.GetResponse();

    Stream responseStream = responseStream = WebResponse.GetResponseStream();
    if (WebResponse.ContentEncoding.ToLower().Contains("gzip"))
        responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
    else if (WebResponse.ContentEncoding.ToLower().Contains("deflate"))
        responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);            

    StreamReader Reader = new StreamReader(responseStream, Encoding.Default);

    string Html = Reader.ReadToEnd();
--------------------编程问答-------------------- 或者
request.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate

你应该先解压,再读取 --------------------编程问答-------------------- 或者
request.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate

你应该先解压,再读取 --------------------编程问答-------------------- 先解压  --------------------编程问答--------------------
引用 2 楼  的回复:
 HttpWebResponse WebResponse = (HttpWebResponse)Http.GetResponse();

    Stream responseStream = responseStream = WebResponse.GetResponseStream();
    if (WebResponse.ContentEncoding.ToLower().Con……


正解! StreamReader Reader = new StreamReader(responseStream, Encoding.Default);后的Encoding是关键
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,