2016-06-16 4 views
0

私は私のAndroidアプリからのHTTP GETリクエストを呼び出す:HttpURLConnectionの - にUnknown形式(マジックナンバー376)

String urlString = "http://my.service.com/foo"; 
HttpURLConnection conn = (HttpURLConnection) (new URL(urlString)).openConnection(); 
conn.setRequestMethod("GET"); 
conn.setDoInput(true); 
conn.setRequestProperty("X-MY-HEADER", "1"); 
conn.setDoOutput(false); 

int code = conn.getResponseCode(); 

最後の行は、例外をスロー:

java.io.IOException: unknown format (magic number 376) 
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:101) 
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81) 
at com.android.okhttp.internal.http.HttpEngine.initContentStream(HttpEngine.java:468) 
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:666) 
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347) 
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) 
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503) 

HTTPエンジンは、gzip形式を使用しているようです内部的に例外が発生します。私は圧縮を求めていませんでした。なぜこの例外がスローされるのですか?何とかそれをオフにすることはできますか?この魔法の番号376はどういう意味ですか?

+0

あなたは(conn.connect含まれていません)。例https://developer.android.com/training/basics/network-ops/connecting.html#download – QVDev

+0

[HttpClient](https://developer.android.com/reference/org/apache)を使用することをお勧めします。 /http/client/HttpClient.html) –

+0

@ LanceJava私はそれを使用していましたが、私は満足していましたが、Android 6.0では推奨されていません... – vojta

答えて

0

私はそれを解決しました! developer.android.comによると:デフォルトでは

、)(HttpURLConnectionののこの実装は サーバはgzip圧縮を使用することを要求し、それが自動的にのgetInputStreamの発信者に対して データを解凍します。この場合、Content-Encodingと Content-Lengthレスポンスヘッダーはクリアされます。 gzipで圧縮 は リクエストヘッダに許容可能なエンコーディングを設定することで無効にすることができます。

conn.setRequestProperty("Accept-Encoding", "identity"); 
関連する問題