sch*_*gel 10 android android-volley okhttp
我正在使用Google Volley和Gson编写我的应用程序,使用OkHttp作为HTTP-Stack与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
Run Code Online (Sandbox Code Playgroud)
这是随机发生的.不是每次我暂停我的申请.我真的不知道从哪里开始.
sch*_*gel 13
看来这个问题是由Android本身的一个错误导致的,应该修复!此问题及其修复程序在此处描述:Android问题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;
}
Run Code Online (Sandbox Code Playgroud)