37

NSURLConnection/NSURLRequest が gzip リクエストをサポートしているかどうかは誰にもわかりません。

もしそうなら、あなたはより多くの情報を提供できますか?

4

2 に答える 2

67

文書化されていないようですが、透過的な gzip をサポートしているという証拠があります。つまり、サーバーが gzip エンコードをサポートしていて、要求に*を含むヘッダーがある場合、サーバーは gzipされた応答を送信し、自動的にデコードされます。NSURLConnection Accept-EncodinggzipNSURLConnection

*NSURLRequestデフォルトでそのヘッダーを追加する場合があります。そうでない場合は、次のように手動で追加する必要があります。

 [urlReq setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]
于 2010-04-21T14:49:04.217 に答える
3

NSURLRequestgzip を にデコードし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);
于 2013-05-23T03:12:50.127 に答える