2013-05-08 49 views
5

ドキュメントがそのことについて言うことを理解できません。Android HttpURLConnection:gzip圧縮

デフォルトでは、このHttpURLConnection実装は、サーバーでgzip圧縮を使用するよう要求します。 getContentLength()は送信されたバイト数を返しますので、そのメソッドを使用してgetInputStream()から読み取ることができるバイト数を予測することはできません。代わりに、そのストリームが使い果たされるまでストリームを読み込みます:read()は-1を返します。 Gzip圧縮は、リクエストヘッダに許容可能なエンコーディングを設定することで無効にすることができます。

urlConnection.setRequestProperty("Accept-Encoding", "identity"); 

私は、現在の実装では、実際に(conn.getInputStream()を使用して)それを返す前にストリームを解凍するかどうかを知りたいのか、それならば接続が自動的にgzipエンコーディングのヘッダーを送信するというだけで、それを管理する必要があります。

ありがとうございました。

答えて

11

これを処理する必要はありません。ただthisブログ投稿からconn.getInputStream()

を使用:ジンジャーブレッドで

、我々は透明レスポンス圧縮を追加しました。 HttpURLConnectionのは、自動的に発信要求にこのヘッダーを追加し、対応する応答処理します:

-受け入れエンコード:gzipで

+1

出典:[Androidデベロッパーブログ - AndroidのHTTPクライアント](のhttp://アンドロイド-開発者。 blogspot.com/2011/09/androids-http-clients.html) – Czechnology