【问题标题】:Issue with okhttp silent retry on connection failure连接失败时 okhttp 静默重试的问题
【发布时间】:2019-04-18 12:15:32
【问题描述】:

我们对 okhttp 重试请求有一些问题。根据我们的崩溃报告日志,我们的大多数客户都收到过多此类异常。

他们抱怨的是数据已上传到服务器,但移动设备仍显示为未上传。我研究了一下,发现 okHttp 正在重试连接失败的请求,并猜测它与这个主题有关。调试应用程序时无法创建案例。我尝试连接到 10.10.10.1,它正在获取套接字超时,但似乎 okhttp 没有重试此请求。它只是在这一行返回 if (!streamAllocation.hasMoreRoutes()) return false; (okhttp v3.12.1)。我在 logcat 或 stetho 中看不到任何重试日志。如何重现这种情况?在这种情况下,okHttp 是否应该重试?在这种情况下禁用重试会有所帮助吗?

根据这篇文章https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace

您不会收到有关这些静默重试的通知。服务器可以 即使您只提出了一个请求,也会收到多个请求。

【问题讨论】:

    标签: android timeout okhttp3


    【解决方案1】:

    我设法复制了基于 okhttp 标准测试的案例。这是测试https://gist.github.com/androideveloper/b411d9e90cb8ad430148a906890d0c90。它静默重试 2 次。如果日志拦截器作为网络拦截器安装,则日志可用。

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 1970-01-01
      • 2014-09-18
      • 2019-11-16
      • 1970-01-01
      • 2016-04-26
      • 2013-06-13
      • 2022-12-10
      • 1970-01-01
      相关资源
      最近更新 更多