この質問は、質問 here の拡張です。私はコードを使用しています here 以下をGZIP圧縮してJSONObject
を圧縮します。
_String foo = "value";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = null;
try {
gzos = new GZIPOutputStream(baos);
gzos.write(foo.getBytes("UTF-8"));
} finally {
if (gzos != null) try { gzos.close(); } catch (IOException ignore) {};
}
byte[] fooGzippedBytes = baos.toByteArray();
_
この圧縮されたJSONObjectをサーバーに送信するためにDefaultHttpClient
を使用しています(コードは私の制御下にあります)。
私の質問
request
で使用するヘッダーは何ですか? JSONをサーバーに送信するためにrequest.setHeader("Content-type", "application/json");
を使用していますか?
Gzipでエンコードされたデータを送信していることをサーバーに通知するには、 Accept-Encoding ではなく Content-Encoding ヘッダーを送信します。
This answerは、圧縮データを送信していることを示すヘッダーを設定する必要があることを示しています。
HttpUriRequest request = new HttpGet(url);
request.addHeader("Content-Encoding", "gzip");
// ...
httpClient.execute(request);
答えは、着信する圧縮データの処理方法も示しています。