NSURLConnection / NSURLRequest gzip支持
有谁知道NSURLConnection / NSURLRequest是否支持gzip请求。
如果有,你能提供更多的信息吗?
提前致谢!
虽然似乎没有logging , 但有证据表明NSURLConnection
确实具有透明的gzip支持。 这意味着如果服务器支持gzip编码,并且你的请求有一个包含gzip
*的Accept-Encoding
头,服务器将发送一个gzip的响应, NSURLConnection
将自动解码。
NSURLRequest
可能会默认添加该标头。 如果没有,你必须像这样手动添加它:
[urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
NSURLRequest
gzip解码为NSData
; 如服务器响应中包含"Content-Encoding" = gzip
; NSData
将解码。 如果您想自动解码,请执行下一步。 使用私有API不能应用于app store。
//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);