有谁知道NSURLConnection / NSURLRequest是否支持gzip请求。
如果有,您能提供更多信息吗?
虽然它does not seem to be documented,there is evidence认为NSURLConnection
确实有透明的gzip支持。意思是如果服务器支持gzip编码,并且你的请求有一个包含Accept-Encoding
*的gzip
头,服务器将发送一个gzip压缩响应,NSURLConnection
会自动解码。
* NSURLRequest
可能会默认添加该标头。如果没有,你必须手动添加它,如下所示:
[urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
NSURLRequest
将gzip解码为NSData
;例如Server响应包含"Content-Encoding" = gzip
; NSData
将解码。如果您不想自动解码,请添加代码。这是一个私有API。
//import CFNetwork.framework
extern CFStringRef kCFURLRequestDoNotDecodeData;
typedef const struct _CFURLRequest* CFURLRequestRef;
extern void _CFURLRequestSetProtocolProperty(CFURLRequestRef,CFStringRef,CFTypeRef);
//NSURLRequest init ...
//...
CFURLRequestRef requestRef = (CFURLRequestRef)[request performSelector:@selector(_CFURLRequest)];
_CFURLRequestSetProtocolProperty(requestRef,kCFURLRequestDoNotDecodeData,kCFBooleanTrue);