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;

}

时间: 2024-10-14 11:42:29

GZIP 头解析的相关文章

HTTP报文头解析

HTTP报文头解析 本篇博客我们就来详细的聊一下HTTP协议的常用头部字段,当然我们将其分为请求头和响应头进行阐述.下方是报文头每个字段的格式,首先是头部字段的名称,如Accept,冒号后方紧跟的是该字段名所对应的值,每个值之间有逗号分隔.如果该值需要优先级,那么在值的后方跟上优先级q=0.8(q的值由0~1,优先级从低到高).值与优先级中间由分号相隔. 头部字段名:值1, 值2;q=0.8 下方就是截取的网络请求中Request Headers的部分内容.红框中的Accept-Language

Python爬虫请求头解析

Python爬虫请求头解析 Accept:本次请求可以接受的内容: Accept-Encoding:可以接受的数据编码的类型: Accept-Language:可以接受的语言类型: Cookie:保存用户状态的登录状态信息(身份证): Host:保存请求的主机地址: Referer:告诉服务器从哪里来(从哪个网站过来的): See-Fetch-Mode/Site/User:用户的一些配置信息(不重要,对爬虫没有影响): Upgrade-Insecure-Request:本次请求是否安全(1为安全

[php]http响应头解析

(Status-Line) HTTP/1.1 200 OK Cache-Control no-cache Content-Length 44 Content-Type image/gif Date Sat, 13 Dec 2014 14:02:03 GMT Expires -1 P3P CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR

HTTP请求的header头解析

Request Headers: 下图是我访问一个URL:http://www.hzau.edu.cn的一个header,根据具体实例来分析一下各部分的功能及其作用. Accept 作用: 浏览器端可以接受的媒体类型, 例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型为 text/html  也就是我们常说的html文档, 如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable) 通配符 * 代表任意类型 例如

[php]HTTP协议头解析

(Request-Line) GET /static/imgs/bqpd.jpg HTTP/1.1 Accept image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 Accept-Encoding gzip, deflate Accept-Language zh-CN Connection Keep-Alive Cookie wdcid=45fba9ac9ebe6e6c; vjuids=8535c4bb.14a429661c9.0.516863e

浏览器向服务器发送请求的请求头解析

1.笔者用chrome浏览器向百度主页发送的请求 请求头第一行是请求行, GET是请求方式 ,"/" 是请求的百度的根目录  HTTP是请求协议 /1.1 是协议的版本号 下图是请求头截图 2.通过一个表格的形式将请求头中的键值对呈现更加直观和清晰 下图是每一行(键值对)所代表的意思 原文地址:https://www.cnblogs.com/aydenwang/p/9404557.html

利用volley进行http设置请求头、超时及请求参数设置(post)

这里以post请求说明,get请求相似设置请求头及超时. 1.自定义request,继承com.android.volley.Request 2.构造方法实现(basecallback,为自定义的监听,实现Response.Listener,ErrorListener接口)--post请求 public BaseRequest(String url,String params, BaseCallback<T> callback)      {   super(Method.POST, url,

前端性能优化之gzip

背景 如果你是个前端开发人员,你肯定知道线上环境要把js,css,图片等压缩,尽量减少文件的大小,提升响应速度,特别是对移动端,这个非常重要. 压缩 压缩方式 前端压缩的方式很多,依赖java的有ant工具,前端自己打包压缩的有grunt,gulp,webpack,这些压缩也很重要,基本上能压缩50%以上,下面我们对压缩文件来个对比,如图所示,这是未压缩的 这是压缩后的 高能预警!!!gzip能在压缩的基础上再进行压缩50%以上!!! gzip压缩原理 但是不是每个浏览器都支持gzip的,如果知

c#网络通信框架networkcomms内核解析之七 数据包创建器(PacketBuilder)

PacketBuilder 数据包创建器,用于辅助创建数据包. 程序把Tcp连接上收到的二进制数据暂时存储在 packetBuilder中,如果收到的数据足够多,程序会把数据包包头解析出来,并根据数据包包头中的数据,解析出数据包大小,根据数据包大小,从PacketBuilder中截取相应的二进制数据,把这部分数据以内存流(MemoryStream)的形式,加上数据包包头一起交给NetworkComms.CompleteIncomingItemTask()方法进行处理. PacketBuilder