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

问题描述 投票:5回答:3

当我只用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)

我正在使用这个qazxsw poi为我的OkHttp Stack for Volley。

android android-volley okhttp
3个回答
2
投票

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


0
投票

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


0
投票

对于那些使用代理(在我的情况下是Charles)的人,除了在设置中配置代理之外,还需要在Android模拟器中配置您的代理。

所以,这是我在Settings Emulator中的配置

https://gist.github.com/bryanstern/4e8f1cb5a8e14c202750

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

  1. 设置
  2. 网络和互联网
  3. Android Wifi
  4. 单击“设置”图标
  5. 单击编辑图标

enter image description here

  1. 配置代理

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.