这是从上SO答案
至于GZIP压缩,你不应该自己做。 让服务器做本身。
修复您的代码删除所有手动尝试压缩响应,它应该结束了,基本是这样的:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String json = createItSomehow();
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
现在从下面的Apache Tomcat 7的配置页面的HTTP连接器
压缩
连接器可以在试图节省服务器的带宽使用HTTP / 1.1 GZIP压缩。 该参数的可接受的值是“开”(允许压缩,这导致要压缩的文本数据)“关”(禁用压缩),“力”(力在所有情况下压缩),或一个数字整数值(这是相当于“上”,但是指定了输出前的数据的最小量被压缩)。 如果内容长度不是已知的,并且压缩被设定为“on”或更积极的,则输出也将被压缩。 如果没有指定,这个属性被设置为“关闭”。
compressionMinSize
如果压缩被设定为“on”,那么此属性可被使用的输出被压缩之前指定的最小数据量。 如果没有指定,该属性默认为“2048”
这意味着,当在设定的压缩上。 如果它比2084更高的数据才会被压缩。
在我的Android客户端我使用下面的代码来寻找数据是否gzip压缩或不
if ( entity.getContentEncoding() != null && "gzip".equalsIgnoreCase(entity.getContentEncoding().getValue())
我的问题
服务器是否也设置的值entity.getContentEncoding().getValue()
时,压缩的数据?