HttpClient自动处理Gzip,Deflate压缩
来源:互联网 发布:matlab与c语言 编辑:程序博客网 时间:2024/06/11 13:38
在4.4版本之后通过RequestConfig创建的httpclient能够自动处理压缩数据
如下RequestConfig.class源码
/** * Determines whether compressed entities should be decompressed automatically. * <p> * Default: {@code true} * </p> * * @since 4.4 */ public boolean isDecompressionEnabled() { return decompressionEnabled; }ResponseContentEncoding (implements HttpResponseInterceptor)类中有处理带压缩header的数据。
@Override public void process( final HttpResponse response, final HttpContext context) throws HttpException, IOException { final HttpEntity entity = response.getEntity(); final HttpClientContext clientContext = HttpClientContext.adapt(context); final RequestConfig requestConfig = clientContext.getRequestConfig(); // entity can be null in case of 304 Not Modified, 204 No Content or similar // check for zero length entity. if (requestConfig.isDecompressionEnabled() && entity != null && entity.getContentLength() != 0) { final Header ceheader = entity.getContentEncoding(); if (ceheader != null) { final HeaderElement[] codecs = ceheader.getElements(); for (final HeaderElement codec : codecs) { final String codecname = codec.getName().toLowerCase(Locale.ROOT); final InputStreamFactory decoderFactory = decoderRegistry.lookup(codecname); if (decoderFactory != null) { response.setEntity(new DecompressingEntity(response.getEntity(), decoderFactory)); response.removeHeaders("Content-Length"); response.removeHeaders("Content-Encoding"); response.removeHeaders("Content-MD5"); } else { if (!"identity".equals(codecname)) { throw new HttpException("Unsupported Content-Coding: " + codec.getName()); } } } } } }Gzip\Deflate 的解压缩处理类。
/** * @since 4.4 */ public ResponseContentEncoding(final Lookup<InputStreamFactory> decoderRegistry) { this.decoderRegistry = decoderRegistry != null ? decoderRegistry : RegistryBuilder.<InputStreamFactory>create() .register("gzip", GZIP) .register("x-gzip", GZIP) .register("deflate", DEFLATE) .build(); }
总结
Httpclient对于原生的HttpConnection做了很多封装处理。方便的同时,当然相比原生的东西,速度上会下降一些,但是带来了很大的便利性。
1 0
- HttpClient自动处理Gzip,Deflate压缩
- GZip 和 deflate压缩
- Web服务器处理HTTP压缩之gzip、deflate压缩
- Web服务器处理HTTP压缩之gzip、deflate压缩
- Web服务器处理HTTP压缩之gzip、deflate压缩
- Web服务器处理HTTP压缩之gzip、deflate压缩
- Web服务器处理HTTP压缩之gzip、deflate压缩
- .NET GZIP,deflate压缩(转)
- ActionFilterAttribute之CompressFilter,GZIP,DEFLATE压缩
- C# GZip、Deflate 压缩解压算法函数
- [原]Nodejs关于gzip/deflate压缩
- C# Deflate、GZip压缩与解压缩
- HttpClient GZip压缩问题
- httpclient gzip压缩
- GZip、Deflate压缩算法对应的C#压缩解压函数
- 如何用HttpWebRequest下载gzip, deflate压缩的页面
- 如何用HttpWebRequest下载gzip, deflate压缩的页面
- web中gzip,deflate的压缩与解压
- SAP MRP MD04运行结果展示
- B - Frequent values
- 制作Linux(Fedora、Ubuntu、CentOS)优盘启动 制作Linux(Fedora、Ubuntu、CentOS)优盘启动
- HDU 4643 GSM(计算几何)
- poj1321
- HttpClient自动处理Gzip,Deflate压缩
- openjudge 百练1664:Placing apples
- 菜鸟入门仿ios高大上--Android沉浸式,复制粘贴动动手
- C#播放器的设计与实现
- 16.7.28
- 安卓转战React-Native之签名打包成Apk并极速多渠道打包
- IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- 手机直播延时直降90% HLS+横空出世
- 块级元素、行内元素、空元素