昨天搞了一天的GZip压缩,试了三种方式(libz库,ZipArchive,ASIHttpRequest),一开始都不成功。
理论上三个应该都能用的,但我都不行。等我试到第三种方式的时候才知道,不是我的问题,而是后台的问题(Java端输出方式一会再说)。
今天就总结一下,写写iOS与Java服务器获取压缩数据的方法吧。
一、客户端-服务端数据压缩解压流程(ASIHttpRequest)
客户端生成request,设置header允许使用压缩("Accept-Encoding","gzip"),即是告诉服务器,客户端支持压缩,但凡
可以压缩的服务器,尽管来吧!服务器收到这个header,如果它支持压缩,可以通过压缩方式输出数据,然后再写入response的
header("Content-Encoding","gzip")
1.以ASIHttpRequest为例,代码如下:
NSURL*
requestURL = [NSURL URLWithString:_listURL];
ASIHTTPRequest *request = [ASIHTTPRequest
requestWithURL:requestURL];
// 默认为YES,
你可以设定它为NO来禁用gzip压缩
[request
setAllowCompressedResponse:YES];
[request
setDelegate:self];
[request
start