本帖最后由 winradius1 于 2010-05-28 20:11:53 编辑

解决方案 »

  1.   

    System.IO.Compression.DeflateStream responseStream =new System.IO.Compression.DeflateStream( httpWebResponse.GetResponseStream(),System.IO.Compression.CompressionMode.Decompress);            
     StreamReader streamReader = new StreamReader(responseStream, encoding);
     string html = streamReader.ReadToEnd();
      

  2.   

    我原来也遇到过这样的问题,可参考一下这里:
    http://blog.csdn.net/sxldfang/archive/2010/04/12/5478078.aspx
      

  3.   

    不行   我是用SOCKET  获取的流
      

  4.   

    1、首先你发送给服务器的请求要告诉服务器你可以识别gzip的压缩方式,在Accept-Encoding里面设置为gzip。
    2、服务器收到这个标记以后会返回给你gzip压缩格式的内容。换句话说如果你告诉服务器你只能识别非压缩的,则服务器应该给你传回来的是未压缩的内容。
    3、下面的代码片段你可以参考一下:IPHostEntry address = new ...
    IPEndPoint ip = new IPEndPoint(address.AddressList[0],80);
    socket = new socket...
    socket.connect(ip);
    open NetWorkStream from socket
    send request with accept-encoding
    read header from server stream
    parse content-encoding
    if(encoding == gzip){
       Stream responseSR = new GZipStream(NetworkStream above)
    }
    else ... other encodingMemoryStream ms = new ...byte[] buffer = new byte[8192];// 8K bufferint position = responseSR.read(buffer,0,buffer.length);
    while(position>0){
       read responseSR to end
    }html = Encoding.UTF8.GetString(ms.ToArray());// can be other encoding上面代码手写的,自己考虑着完成吧,不能直接运行
      

  5.   

    你遍历流,然后在遇到第一个\r\n\r\n之后开始解压之后的数据即可。