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

GZIP 解压缩 HTTP流 快速结帖 高手在哪?

--------------------编程问答-------------------- 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(); --------------------编程问答-------------------- 我原来也遇到过这样的问题,可参考一下这里:
http://blog.csdn.net/sxldfang/archive/2010/04/12/5478078.aspx --------------------编程问答-------------------- 不行   我是用SOCKET  获取的流 --------------------编程问答-------------------- 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 encoding

MemoryStream ms = new ...

byte[] buffer = new byte[8192];// 8K buffer

int position = responseSR.read(buffer,0,buffer.length);
while(position>0){
   read responseSR to end
}

html = Encoding.UTF8.GetString(ms.ToArray());// can be other encoding

上面代码手写的,自己考虑着完成吧,不能直接运行
--------------------编程问答-------------------- 你遍历流,然后在遇到第一个\r\n\r\n之后开始解压之后的数据即可。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,