根据这个
http://android-developers.blogspot.com/2011/09/androids-http-clients.html如果你使用姜饼或以后HttpURLConnection自动添加gzip压缩:
In Gingerbread,we added transparent response compression.
HttpURLConnection will automatically add this header to outgoing
requests,and handle the corresponding response:
Accept-Encoding: gzip
然后,您的网络服务器需要处理gzip压缩.
private static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
private static final String ENCODING_GZIP = "gzip";
final DefaultHttpClient client = new DefaultHttpClient(manager,parameters);
client.addRequestInterceptor(new HttpRequestInterceptor() {
public void process(HttpRequest request,HttpContext context) {
// Add header to accept gzip content
if (!request.containsHeader(HEADER_ACCEPT_ENCODING)) {
request.addHeader(HEADER_ACCEPT_ENCODING,ENCODING_GZIP);
}
}
});
client.addResponseInterceptor(new HttpResponseInterceptor() {
public void process(HttpResponse response,HttpContext context) {
// Inflate any responses compressed with gzip
final HttpEntity entity = response.getEntity();
final Header encoding = entity.getContentEncoding();
if (encoding != null) {
for (HeaderElement element : encoding.getElements()) {
if (element.getName().equalsIgnoreCase(ENCODING_GZIP)) {
response.setEntity(new InflatingEntity(response.getEntity()));
break;
}
}
}
}
});
编辑3:
这是关于邮件内容GZip POST request with HTTPClient in Java的gzip的另一个Stackoverflow问题.您需要在发布之前手动gzip数据,因为正常的http / gzip操作是将gzip压缩内容发送到客户端的服务器.