Какой заголовок должен использоваться для отправки GZIP сжатого JSON из Android Client на сервер? - программирование

Какой заголовок должен использоваться для отправки GZIP сжатого JSON из Android Client на сервер?

Этот вопрос является продолжением вопроса здесь. Я использую код здесь, воспроизведенный ниже, для сжатия GZIP a 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();

Я использую DefaultHttpClient для отправки этого сжатого JSONObject на сервер (код находится в моем распоряжении).

Мой вопрос

Какой заголовок следует использовать в моем request? Я использую request.setHeader("Content-type", "application/json"); для отправки JSON на сервер?

4b9b3361

Ответ 1

Чтобы сообщить серверу, что вы отправляете gzip-кодированные данные, отправьте заголовок Content-Encoding, а не Accept-Encoding.

Ответ 2

Этот ответ показывает, что вам нужно установить заголовок, указывающий, что вы отправляете сжатые данные:

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

В ответе также показано, как обрабатывать входящие сжатые данные.