NSURLConnection/NSURLRequest gzip support

前端 未结 2 1788
無奈伤痛
無奈伤痛 2020-12-04 19:31

Does anyone knows if NSURLConnection/NSURLRequest have support for gzip requests.

If does, can you provide more information?

相关标签:
2条回答
  • 2020-12-04 19:59

    although it does not seem to be documented, there is evidence that NSURLConnection does have transparent gzip support. meaning that if the server supports gzip encoding, and your request has an Accept-Encoding header containing gzip*, the server will send a gzipped response, which NSURLConnection will automatically decode.

    * NSURLRequest might add that header by default. if not, you have to add it manually like so:

     [urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
    
    0 讨论(0)
  • 2020-12-04 20:08

    NSURLRequest decodes gzip to NSData; such as the Server response contain "Content-Encoding" = gzip; the NSData will decode. If you don't want to automatically decode it, add the code below. This is a private 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);
    
    0 讨论(0)
提交回复
热议问题