Retrofit
を使用してリクエストを管理しており、gzipを使用しているかどうかを確認するためにいくつかのテストを行いたいと考えています。
デフォルトでは、OkHttp
はリクエストに対してgzip圧縮を実行しますか、それとも interceptor で実装する必要がありますか?
私は追加しました
@Headers({
"Accept-Encoding: gzip, deflate",
"Content-Encoding: gzip"
})
または:
@Headers({
"Content-Type: application/json;charset=utf-8",
"Accept: application/json"
})
私のリクエストに応じて、リクエストの長さに変更は見られませんでした。
このヘッダーで機能を無効にしない限り、OkHttpは応答本文で透過的なgzipを実行します。
Accept-Encoding: identity
このコードを使用できます
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url)
.addHeader("X-TOKEN", "Bearer " + Auth.getInstance(mContext).getToken())
.addHeader("Accept-Encoding", "gzip")
.build();
Response response = client.newCall(request).execute();
if (responseCode == 200) {
// Regular JSON parsing to model
ItemModel itemModel = LoganSquare.parse(response.body().byteStream(), ItemModel.class);
long responseSize = response.body().contentLength();
// Manually decompress GZIP?
ItemModel itemModel = LoganSquare.parse(new GZIPInputStream(response.body().byteStream()), ItemModel.class);
long responseSize = response.body().contentLength();
}