okhttp框架-如何对请求数据进行GZIP压缩
官方给出的例子是采用拦截器的方式来是实现GZIP压缩。
/**拦截器压缩http请求体,许多服务器无法解析*/staticclassGzipRequestInterceptorimplementsInterceptor{@OverridepublicResponseintercept(Chainchain)throwsIOException{RequestoriginalRequest=chain.request();if(originalRequest.body()==null||originalRequest.header("Content-Encoding")!=null){returnchain.proceed(originalRequest);}RequestcompressedRequest=originalRequest.newBuilder().header("Content-Encoding","gzip").method(originalRequest.method(),gzip(originalRequest.body())).build();returnchain.proceed(compressedRequest);}privateRequestBodygzip(finalRequestBodybody){returnnewRequestBody(){@OverridepublicMediaTypecontentType(){returnbody.contentType();}@OverridepubliclongcontentLength(){return-1;//无法知道压缩后的数据大小}@OverridepublicvoidwriteTo(BufferedSinksink)throwsIOException{BufferedSinkgzipSink=Okio.buffer(newGzipSink(sink));body.writeTo(gzipSink);gzipSink.close();}};}}
源码地址
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。