<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發

      導航

      Okhttp3請求網絡開啟Gzip壓縮

      前沿

      首先OkHttp3是支持Gzip解壓縮的,不過我們要明白,它是支持我們在發起請求的時候自動加入header,Accept-Encoding: gzip,而我們的服務器返回的時候header中有Content-Encoding: gzip
      關于更多深入的內容呢,可以參考閱讀下面這篇文章,講的非常好!
      聊聊HTTP gzip壓縮與常見的Android網絡框架

      那么,我們在向服務器提交大量數據的時候,希望對post的數據進行gzip壓縮,改怎么辦?
      下邊給出方案!

      方案

      官方采用的是自定義攔截器的方式!
      源碼在:
      okhttp/samples/guide/src/main/java/okhttp3/recipes/RequestBodyCompression.java
      廢話不多說,直接上代碼:

       1 import java.io.IOException;
       2 
       3 import okhttp3.Interceptor;
       4 import okhttp3.MediaType;
       5 import okhttp3.Request;
       6 import okhttp3.RequestBody;
       7 import okhttp3.Response;
       8 import okio.BufferedSink;
       9 import okio.GzipSink;
      10 import okio.Okio;
      11 
      12 public class GzipRequestInterceptor implements Interceptor {
      13     @Override
      14     public Response intercept(Chain chain) throws IOException {
      15         Request originalRequest = chain.request();
      16         if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) {
      17             return chain.proceed(originalRequest);
      18         }
      19 
      20         Request compressedRequest = originalRequest.newBuilder()
      21                 .header("Content-Encoding", "gzip")
      22                 .method(originalRequest.method(), gzip(originalRequest.body()))
      23                 .build();
      24         return chain.proceed(compressedRequest);
      25     }
      26 
      27     private RequestBody gzip(final RequestBody body) {
      28         return new RequestBody() {
      29             @Override
      30             public MediaType contentType() {
      31                 return body.contentType();
      32             }
      33 
      34             @Override
      35             public long contentLength() {
      36                 return -1; // 無法提前知道壓縮后的數據大小
      37             }
      38 
      39             @Override
      40             public void writeTo(BufferedSink sink) throws IOException {
      41                 BufferedSink gzipSink = Okio.buffer(new GzipSink(sink));
      42                 body.writeTo(gzipSink);
      43                 gzipSink.close();
      44             }
      45         };
      46     }
      47 }

      然后構建OkhttpClient的時候,添加攔截器:

      OkHttpClient okHttpClient = new OkHttpClient.Builder() 
          .addInterceptor(new GzipRequestInterceptor())//開啟Gzip壓縮
          ...
          .build();

      后記

      如果需要帶有內容長度content-length的,可以查看這個issue:
      Here’s the full gzip interceptor with content length, to whom it may concern:

      參考:https://blog.csdn.net/tq08g2z/article/details/77311579

      posted on 2018-05-20 11:06  安卓筆記俠  閱讀(2707)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 仁怀市| 日韩高清视频 一区二区| 久久亚洲精品人成综合网| 亚洲综合小说另类图片五月天| 久久综合激情网| 亚洲欧美综合中文| 色欧美片视频在线观看| 蜜臀AⅤ永久无码精品| 巨爆乳中文字幕爆乳区| 天堂а√在线最新版中文在线| 国产老熟女无套内射不卡| 婷婷六月色| 欧美人与动牲猛交A欧美精品| 激情亚洲内射一区二区三区 | 国产日韩一区二区四季| 亚洲中文字幕无码av在线| 无码人妻精品一区二区三区下载 | 人妻丝袜AV中文系列先锋影音| 视频一区二区 国产视频| 国产特级毛片AAAAAA视频| 亚洲日本精品一区二区| 免费99视频| 97人人添人人澡人人澡人人澡| 99久久精品美女高潮喷水| 国产粉嫩一区二区三区av| 亚洲人成网网址在线看| av无码免费一区二区三区| 亚洲开心婷婷中文字幕| 色综合国产一区二区三区| 亚洲第一无码AV无码专区| 国产欧美综合在线观看第十页| 亚洲精品专区永久免费区| 伊人久在线观看视频| 南靖县| 久久婷婷成人综合色综合| 俄罗斯少妇性XXXX另类| 卢龙县| 中国少妇人妻xxxxx| 中文字幕一区日韩精品| 人妻中文字幕亚洲一区| 国产一区二区三区精品久|