GZIP 头解析

Posted 哥,我还要

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GZIP 头解析相关的知识,希望对你有一定的参考价值。

在用HttpWebRequest对象时,一般我们都没有开启gzip压缩,如果服务端返回的数据比较大,这是我们需要开启gzip压缩,怎么开启呢?

1.给HttpWebRequest对象,添加如下Header:

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

2.对接收到的流进行解码:

private string GetResponseBody(HttpWebResponse response)
{
string responseBody = string.Empty;

if (response.ContentEncoding.ToLower().Contains("gzip")) {

using (GZipStream stream = new GZipStream(
response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReaderreader = new StreamReader(stream))
{
responseBody = reader.ReadToEnd();
}
}
}
else if (response.ContentEncoding.ToLower().Contains("deflate"))
{
using (DeflateStream stream = new DeflateStream(
response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader reader =
new StreamReader(stream, Encoding.UTF8))
{
responseBody = reader.ReadToEnd();
}
}
}
else
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader =
new StreamReader(stream, Encoding.UTF8))
{
responseBody = reader.ReadToEnd();
}
}
}
return responseBody;
}

以上是关于GZIP 头解析的主要内容,如果未能解决你的问题,请参考以下文章

OkHttp-BridgeInterceptor源码解析

协议分析Gzip格式与解析

java兑现html网页的gzip解压

Python解析二进制字节流为字符串(GZIP)

Python解析二进制字节流为字符串(GZIP)

ASIHTTPRequest中数据压缩问题与gzip