Android Retrofit我有时会获得ECONNRESET,但我不知道为什么

时间:2016-12-02 16:01:03

标签: android retrofit2 okhttp okhttp3

我从我的后端公司收到伪randomely ECONNRESET。我说伪随机是因为它并没有像我每次发出大量请求时所说的那样发生它。

我通常会从活动的生命周期事件中启动下载,因此我会使用Retrofit Call.enqueue()在后​​台进行联网。在代码中似乎造成麻烦的部分,我从后台线程启动了一系列下载(jsons和5-6个文件的~15个REST路由)。在这种情况下,ECONNRESET在其中一个被调用的REST路由中尝试了2个中的2个。

没有更多解释服务器端我们记录的唯一内容是读/写ECONNRESET。

以下是我尝试的内容:

  • 更新为okhttp 3.5.0(来自3.2.0)并改进2.1.0(来自2.0.2
  • 我添加了#34;连接:关闭" int我的请求标题以防止保持活着。
  • 我将总池数减少到1: .connectionPool(new ConnectionPool(0, 1, TimeUnit.SECONDS))

它发生在我的手机上(Android 6),我没有其他手机来测试代码。我的AVD存在一些无关的问题,导致我无法在不同的Android版本上进行测试(很快就会修复)。

你知道什么能证明这一点吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

对于记录,我在我的文件下载方法中使用HttpURLConnection(通过改造和okhttp我的REST api被问及),我将其更改为okHttp,现在一切都很好。