入主题之前,我们先来看一下客户端与服务器通信过程中,如果服务器支持,HTTP gzip压缩是如何实现的?
如图所示:

request header中声明Accept-Encoding: gzip,告知服务器客户端接受gzip的数据。
服务器支持的情况下,返回gzip后的response body,同时加入以下header:
Content-Encoding: gzip:表明body是gzip过的数据Content-Length:117:表示body gzip压缩后的数据大小,便于客户端使用。
或Transfer-Encoding: chunked:分块传输编码
OK,HTTP gzip压缩的基本流程我们理清楚了,来看在Android各网络框架中表现有什么差异。
OkHttp
OkHttp作为目前Android最火的网络库,应用范围较广,相比于Android自带的HttpUrlConnection、Apache坑也少很多。
我们首先来看这个库的实现:

