代码之家  ›  专栏  ›  技术社区  ›  mxg

nsurlconnection/nsurlrequest gzip支持

  •  34
  • mxg  · 技术社区  · 15 年前

    是否有人知道nsurlconnection/nsurlrequest是否支持gzip请求?

    如果有,你能提供更多信息吗?

    2 回复  |  直到 6 年前
        1
  •  63
  •   jscs    8 年前

    虽然它 does not seem to be documented , there is evidence 那个 NSURLConnection 有透明的gzip支持。这意味着如果服务器支持gzip编码,并且您的请求具有 Accept-Encoding 包含标题 gzip *,服务器将发送gzip响应,其中 非连接 将自动解码。

    * NSURLRequest 默认情况下可能会添加该头。如果没有,则必须手动添加,如下所示:

     [urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
    
        2
  •  2
  •   liuyuning    6 年前

    NSURLRequest 解码GZIP到 NSData ;例如服务器响应包含 "Content-Encoding" = gzip ; 操作文件数据 将解码。 如果你不想自动解码,就加上代码漏洞。这是一个私有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);