NSURLConnection/NSURLRequestがgzipリクエストをサポートしているかどうかは誰かが知っていますか?.
もしそうなら、あなたはより多くの情報を提供できますか?
文書化されていないようです 、 証拠がありますNSURLConnection
が行う透明なgzipサポートがあります。つまり、サーバーがgzipエンコーディングをサポートし、リクエストにAccept-Encoding
ヘッダーにgzip
*が含まれている場合、サーバーはgzip圧縮された応答を送信し、NSURLConnection
が自動的にデコードします。
* NSURLRequest
はデフォルトでそのヘッダーを追加する場合があります。そうでない場合は、次のように手動で追加する必要があります。
[urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
NSURLRequest
はgzipをNSData
にデコードします。サーバーレスポンスなどには"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);