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);