web-dev-qa-db-ja.com

AndroidクライアントからサーバーへのGZIP圧縮JSONの送信には、どのヘッダーを使用する必要がありますか?

この質問は、質問 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");を使用していますか?

25
Gaurav Agarwal

Gzipでエンコードされたデータを送信していることをサーバーに通知するには、 Accept-Encoding ではなく Content-Encoding ヘッダーを送信します。

43
Michael Hampton

This answerは、圧縮データを送信していることを示すヘッダーを設定する必要があることを示しています。

HttpUriRequest request = new HttpGet(url);
request.addHeader("Content-Encoding", "gzip");
// ...
httpClient.execute(request);

答えは、着信する圧縮データの処理方法も示しています。

19
Audrius