首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android: HTTP通信应使用"Accept-Encoding: gzip“

Android: HTTP通信应使用"Accept-Encoding: gzip“
EN

Stack Overflow用户
提问于 2009-10-15 16:10:02
回答 4查看 59.7K关注 0票数 109

我与请求JSON数据的‘ve服务器进行了HTTP通信。我想用Content-Encoding: gzip压缩这个数据流。有没有办法在我的HttpClient中设置Accept-Encoding: gzip?在Android参考资料中搜索gzip并没有显示任何与HTTP相关的内容,正如您所看到的here

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-16 06:53:18

您应该使用http标头来指示连接可以接受gzip编码的数据,例如:

代码语言:javascript
复制
HttpUriRequest request = new HttpGet(url);
request.addHeader("Accept-Encoding", "gzip");
// ...
httpClient.execute(request);

检查内容编码的响应:

代码语言:javascript
复制
InputStream instream = response.getEntity().getContent();
Header contentEncoding = response.getFirstHeader("Content-Encoding");
if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
    instream = new GZIPInputStream(instream);
}
票数 174
EN

Stack Overflow用户

发布于 2012-02-09 02:10:53

如果你使用的是8级或更高级别的API8,那就是AndroidHttpClient

它有一些辅助方法,比如:

代码语言:javascript
复制
public static InputStream getUngzippedContent (HttpEntity entity)

代码语言:javascript
复制
public static void modifyRequestToAcceptGzipResponse (HttpRequest request)

导致更简洁的代码:

代码语言:javascript
复制
AndroidHttpClient.modifyRequestToAcceptGzipResponse( request );
HttpResponse response = client.execute( request );
InputStream inputStream = AndroidHttpClient.getUngzippedContent( response.getEntity() );
票数 33
EN

Stack Overflow用户

发布于 2009-10-15 18:44:53

我没有使用GZip,但我假设您应该使用来自HttpURLConnectionHttpResponse的输入流作为GZIPInputStream,而不是某个特定的其他类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1573391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档