web-dev-qa-db-ja.com

Accept-Encoding:iOSのgzip

Q1iOSアプリキットでは、 Accept-Encoding: gzip が自動的に使用されると期待できますか、それとも必要ですか?これをURLリクエストのどこかに設定して、使用するように明示的に要求するには?

現在、[NSData dataWithContentsOfURL: url]という呼び出しを使用していますが、NSURLSessionを特別に設定するように切り替える可能性があります。これにより、gzipエンコーディングが自動的に要求される可能性がありますか?

Q2また、isが使用され、サーバーがgzip圧縮されたコンテンツを義務付けている場合、クライアント側が圧縮されたコンテンツを透過的に自動的にデコードするので、必要はありませんか?

16
Benjohn

信頼できるリファレンスをすぐに見つけることはできませんが、すべて自動です。プロキシを使用して経験的に証明できます。

私がこれまでに見つけた最高のもの: iOS 7.1リリースノート それを渡す際の言及...

一部のWebサーバーが「Content-Encoding:gzip」コンテンツに対して誤ったContent-Length値を送信する問題に対処するために、互換性の動作が追加されました。以前は、NSURLConnectionとNSURLSessionは、この状況で「ネットワーク接続が失われました」/ NSURLErrorNetworkConnectionLost(-1005)エラーを送信していました。

互換性の動作は、Content-Length値が展開されたgzipで圧縮されたコンテンツと完全に一致する場合にのみ適用されます。 「オフバイ1」または同様の誤カウントには適用されません。

つまり、NSURLConnectionNSURLSessionには、gzipコンテンツを処理するためのコードが含まれており、7.1より前に確実に処理されていました(「以前」への参照による)。ちなみに、彼らは太古の昔からそうしているように見えますが、いずれにせよ、7.0 +は現在アプリダウンロード市場の約98%です。

16
Tommy