HttpURLConnection没有解压缩Gzip

Kyl*_*ler 5 android gzip httpurlconnection

我正在尝试在Gingerbread + Android设备上使用HttpURLConnection,并且遇到gzip编码问题.根据文件

"在Gingerbread中,我们添加了透明的响应压缩.HttpURLConnection会自动将此标头添加到传出请求中,并处理相应的响应:

Accept-Encoding:gzip"

问题是这实际上并没有发生.Accept-Encoding:gzip标头根本没有添加.如果我手动添加它,我会期望它的解压缩部分通过connection.openInputStream()来自动返回GZipInputStream,但它只返回一个普通的InputStream.

有没有人经历过这个?我没有看到任何这种情况发生的帖子,所以很奇怪.该项目是针对API 17编译的,因此不应该是一个问题,设备运行4.3.

谢谢.

idr*_*sid 11

我有同样的问题,它与HTTPS有关.如果你打电话:

URL url = new URL("https://www.example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
Run Code Online (Sandbox Code Playgroud)

你实际上得到一个HttpsURLConnection(HttpURLConnection的子类)的实例,它不会自动处理gzip.在这些情况下,您可以:

conn.setRequestProperty("Accept-Encoding", "gzip");
...
InputStream inStream = new GZIPInputStream(conn.getInputStream());
Run Code Online (Sandbox Code Playgroud)


And*_*ell 2

我用我的一些设备进行了测试,并且 HttpURLConnection 正在添加Accept-Encoding: gzip到标头中。

您是否尝试过为 Android 设备配置 Fiddler来验证 http 标头?也许您的服务器不支持压缩。