Android上的Volley + OkHttp在状态200响应时出错

时间:2015-08-16 18:08:34

标签: android android-volley okhttp

当我仅使用Volley提出请求时,一切顺利,我的StringRequest转到onResponse。

但是当我切换到Volley + Okhttp组合时,我的请求通过,我收到了与之前相同的响应,但后来我收到以下错误消息:

E/Volley﹕ [122319] BasicNetwork.performRequest: Unexpected response code 200 for <my request url> java.io.IOException: closed com.android.volley.NetworkError: java.io.IOException: closed at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:182) at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:114) Caused by: java.io.IOException: closed at okio.RealBufferedSource$1.read(RealBufferedSource.java:345) at java.io.InputStream.read(InputStream.java:162) at com.android.volley.toolbox.BasicNetwork.entityToBytes(BasicNetwork.java:254) at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:130)             at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:114)

我将这个https://gist.github.com/bryanstern/4e8f1cb5a8e14c202750用于我的OkHttpStack for Volley。

3 个答案:

答案 0 :(得分:2)

我没有太多时间去调查,但在使用通过代理连接的模拟器(Charles)时遇到了同样的问题。对我来说,当我在没有代理或设备的情况下进行测试时,问题就会消失。

答案 1 :(得分:0)

当使用RequestQueue的start和stop方法时,我遇到了同样的问题。在许多流行的博客中都指出,当用户投掷时应该停止RequestQueue以确保没有抽搐。但是,当您调用stop时,所有RequestQueue的请求都会停止,即使是那些已经在进行网络呼叫的请求也是如此。当这些请求被初步停止时,会发生上述异常。没有调用stop函数解决了我的问题。

答案 2 :(得分:0)

对于那些使用代理的人(在我的情况下为Charles),除了在“设置”中配置您的代理外,还需要在Android仿真器中配置您的代理。

所以,这是我在设置模拟器中的配置

enter image description here

这是在Android Emulator中使用wifi配置代理的步骤

  1. 设置
  2. 网络与互联网
  3. Wi-Fi
  4. Android Wifi
  5. 单击“设置”图标
  6. 单击“编辑”图标

enter image description here

  1. 配置您的代理

enter image description here