これはSOの回答からです
GZIP圧縮に関しては、自分で行うべきではありません。サーバーに任せましょう。
コードを修正して、応答を圧縮しようとするすべての手動の試みを削除します。基本的には次のようになります。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String json = createItSomehow();
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
以下は、HTTPコネクタのApacheTomcat7構成ページからのものです。
圧縮
コネクタは、サーバーの帯域幅を節約するためにHTTP /1.1GZIP圧縮を使用する場合があります。パラメータの許容値は、「off」(圧縮を無効にする)、「on」(圧縮を許可し、テキストデータを圧縮する)、「force」(すべての場合に圧縮を強制する)、または数値の整数値( 「on」と同等ですが、出力が圧縮される前のデータの最小量を指定します)。content-lengthが不明で、圧縮が「オン」以上に設定されている場合、出力も圧縮されます。指定しない場合、この属性は「オフ」に設定されます。
CompressionMinSize
圧縮が「オン」に設定されている場合、この属性を使用して、出力が圧縮される前のデータの最小量を指定できます。指定しない場合、この属性のデフォルトは「2048」です。
これは、圧縮がオンに設定されている場合を意味します。データは、2084より大きい場合にのみ圧縮されます。
私のAndroidクライアントでは、次のコードを使用して、データがgzip圧縮されているかどうかを確認しています
if ( entity.getContentEncoding() != null && "gzip".equalsIgnoreCase(entity.getContentEncoding().getValue())
私の質問
entity.getContentEncoding().getValue()
サーバーは、データを圧縮したときの値も設定しますか?