您的位置:首页 > 移动开发 > Android开发

android下使用gzip压缩提升访问server api的效率

2016-02-28 22:26 429 查看
使用gzip的流程如下:

1在httprequest请求头中,添加要求支持gzip的key-value,key是accept-encoding

value是 gzip如下所示

httprequest.addHeader("accept-encoding","gzip");

2在服务端的逻辑是,检查http请求头中的accept-encoding是否有gzip值,如果有就执行gzip压缩。

如果执行了gzip压缩,那么返回的httpresponse的头中就有一个content-encoding字段,会带有gzip压缩的值。

3app检查httpresponse头中的content-encoding字段是否包含gzip值,这个值有无,导致了app解析httpresponse的姿势不同

//根据是否支持gzip来使用不同的解析方式
String strResponse = "";
if ((response.getEntity().getContentEncoding() != null)
&& (response.getEntity().getContentEncoding().getValue() != null)) {
<span style="white-space:pre">	</span>if (response.getEntity().getContentEncoding().getValue().contains("gzip")) {
<span style="white-space:pre">	</span>final InputStream in = response.getEntity().getContent();
<span style="white-space:pre">	</span>final InputStream is = new GZIPInputStream(in);
<span style="white-space:pre">	</span>strResponse = HttpRequest.inputStreamToString(is);
<span style="white-space:pre">	</span>is.close();
<span style="white-space:pre">	</span>} else {
	response.getEntity().writeTo(content);
	strResponse = new String(content.toByteArray()).trim();
	}
} else {
<span style="white-space:pre">	</span>response.getEntity().writeTo(content);
	strResponse = new String(content.toByteArray()).trim();
	}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: