温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

okhttp框架-如何对请求数据进行GZIP压缩

发布时间:2020-06-14 12:06:40 来源:网络 阅读:9745 作者:xiaofei_zhang 栏目:开发技术

官方给出的例子是采用拦截器的方式来是实现GZIP压缩。

/** 拦截器压缩http请求体,许多服务器无法解析 */   static class GzipRequestInterceptor implements Interceptor {     @Override public Response intercept(Chain chain) throws IOException {       Request originalRequest = chain.request();       if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) {         return chain.proceed(originalRequest);       }       Request compressedRequest = originalRequest.newBuilder()           .header("Content-Encoding", "gzip")           .method(originalRequest.method(), gzip(originalRequest.body()))           .build();       return chain.proceed(compressedRequest);     }     private RequestBody gzip(final RequestBody body) {       return new RequestBody() {         @Override public MediaType contentType() {           return body.contentType();         }         @Override public long contentLength() {           return -1; // 无法知道压缩后的数据大小         }         @Override public void writeTo(BufferedSink sink) throws IOException {           BufferedSink gzipSink = Okio.buffer(new GzipSink(sink));           body.writeTo(gzipSink);           gzipSink.close();         }       };     }   }


源码地址


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI