应该使用哪个标头将GZIP压缩的JSON从Android客户端发送到服务器?

问题描述 投票:27回答:3

此问题是对问题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();

我正在使用DefaultHttpClient将此压缩的JSONObject发送到服务器(代码在我的控件中)。

我的问题

我应该在request中使用哪个标题?我正在使用request.setHeader("Content-type", "application/json");将JSON发送到服务器吗?

android json servlets http-headers gzip
3个回答
44
投票

要通知服务器您正在发送gzip编码的数据,请发送Content-Encoding标头,而不是Accept-Encoding


20
投票

[This答案表明您需要设置一个标题,指示您正在发送压缩的数据:

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

答案还显示了如何处理传入的压缩数据。


0
投票

Content-Type:application / json-告诉HTTP调用中什么类型的内容数据

Content-Encoding:gzip-告诉正在使用什么压缩。

application / json或text / xml或其他可以压缩为gzip并发送到接收的文件,并且通过使用Content-Type标头,它们将在解压缩后识别输入数据为application / josn或text / xml类型。

© www.soinside.com 2019 - 2024. All rights reserved.