Android HttpURLConnection Accept-Encoding: gzip 版本问题

Android的HttpURLConnection从Gingerbread版本开始默认设置Accept-Encoding为gzip,导致低版本设备请求不一致,带来兼容性问题。未在官方API中明确此变更,可能导致服务器端处理时的不兼容。为避免此类问题,可以考虑使用Apache HttpClient代替。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 官方文档对 HttpURLConnection 的 Performance 的描述有一段:

By default, this implementation of HttpURLConnection requests that servers use gzip compression

参见: http://developer.android.com/reference/java/net/HttpURLConnection.html

就是说 使用HttpURLConnection发请求时,默认的request hearder里会加上 Accept-Encoding: gzip

这是坑!!!

因为Android的这个Feature是在Gingerbread(android 2.3.3) 版本以后才加上的, 而这一点并未在其官方API中注明。

所以同样的应用,在低版本的android上,发出的是非gzip的请求,而在高版本的android上发出的是gzip的请求,这样在server端处理时,就要特别小心兼容两类情况。

(我们因此出了一个大bug。)

下面是另外一篇文章中提到的:

In Gingerbread, we added transparent response compression. HttpURLConnection will automatically add this header to outgoing requests,
 and handle the corresponding response:

Accept-Encoding: gzip
参见: http://android-developers.blogspot.com/2011/09/androids-http-clients.html


如果不想处理这些问题,也可以弃用 HttpURLConnection 而改用 Apache Http Client, 它发送的都是非gzip类型的请求,与android版本无关。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值