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#