10

私は Google Volley と Gson を使用してアプリを作成し、OkHttp を HTTP スタックとして使用して REST サービスと通信しています。それはほとんどの場合うまくいきますが、アプリを一時停止してアプリに戻ると、HTTP リクエストはこの例外で機能しません:

     09-08 19:29:19.611: E/ASDF(21827): com.android.volley.NoConnectionError: java.io.EOFException
     09-08 19:29:19.611: E/ASDF(21827):     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:125)
     09-08 19:29:19.611: E/ASDF(21827):     at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:105)
     09-08 19:29:19.611: E/ASDF(21827): Caused by: java.io.EOFException
     09-08 19:29:19.611: E/ASDF(21827):     at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:206)
     09-08 19:29:19.611: E/ASDF(21827):     at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:98)
     09-08 19:29:19.611: E/ASDF(21827):     at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
     09-08 19:29:19.611: E/ASDF(21827):     at com.squareup.okhttp.internal.http.HttpEngine.initContentStream(HttpEngine.java:461)
     09-08 19:29:19.611: E/ASDF(21827):     at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:659)
     09-08 19:29:19.611: E/ASDF(21827):     at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:346)
     09-08 19:29:19.611: E/ASDF(21827):     at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:295)
     09-08 19:29:19.611: E/ASDF(21827):     at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:489)
     09-08 19:29:19.611: E/ASDF(21827):     at com.squareup.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136)
     09-08 19:29:19.611: E/ASDF(21827):     at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:109)
     09-08 19:29:19.611: E/ASDF(21827):     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93)
     09-08 19:29:19.611: E/ASDF(21827):     ... 1 more

それはランダムに起こります。アプリケーションを一時停止するたびにではありません。どこから始めればいいのか本当にわかりません。

4

2 に答える 2

13

この問題は Android 自体のバグが原因のようで、これを修正する必要があります!? この問題とその修正については、Android issue 24672で説明しています。

したがって、このコードを OkHttp URLConnection ファクトリに追加すると、すぐに問題が修正されました。

  @Override protected HttpURLConnection createConnection(URL url) throws IOException {
    HttpURLConnection connection = client.open(url);
    // Fix for bug in Android runtime(!!!):
    // https://code.google.com/p/android/issues/detail?id=24672
    connection.setRequestProperty("Accept-Encoding", "");

    return connection;
  }   
于 2013-09-21T10:03:42.927 に答える
0

この問題は約1時間発生しました。仮想マシンのレスト サービスに接続しようとしている場合は、Android エミュレーターのホスト ファイルを変更する必要があります。

私はすでにこれを行っていたので、長い間戸惑いました。エミュレーターの再起動間でホストファイルが保持されるとは思いません。これは面倒ですが、今私(そしておそらくあなた)は知っています...

于 2015-11-11T15:03:10.973 に答える