当前位置: 首页 > 知识库问答 >
问题:

连接失败时okhttp静默重试的问题

谭思博
2023-03-14

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

他们抱怨的是,数据上传到服务器,但移动端仍然显示没有上传。我研究了一点,发现okHttp在连接失败时重试请求,猜测这与这个主题有关。我不能在调试应用程序时创建一个案例。我已经尝试连接到10.10.10.1,它得到了套接字超时,但似乎okhttp没有重试这个请求。如果(!StreamAllocation.hasmoreRoutes())返回false;(okhttp V3.12.1),它就会在这一行返回。在logcat或stetho中,我看不到任何关于重试的日志。如何重现这个案例?在这种情况下应该重试okHttp吗?在这种情况下,禁用重试会有帮助吗?

根据本文,https://medium.com/inloopx/okhttp-is-villey-retry-requests-is-your-api-ready-19489EF35ACE


共有1个答案

宣瀚
2023-03-14

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

 类似资料:
  • 在我的场景中,我们的后端希望对任何请求获得唯一的ID,但我读到“OKHTTP可能会在慢速/不可靠的连接上‘积极地’重复您的请求,直到成功。”和一些OkHttp问题。我知道可以使用禁用重试机制,但我希望启用它来处理连接问题。我想要的正是,在静默重试之前修改请求。我可以在发送沉默请求之前拦截吗?

  • 问题内容: 我已将Web应用程序部署到远程树脂服务器,并且已打开JMX。 我可以远程登录到远程服务器,即 但是我无法使用我的JConsole连接到它 我已经在以下Java版本中尝试过此操作,但是在两个实例上都收到“连接失败”的提示。 你们对如何调试有任何想法(即找出问题所在)吗? 问题答案: 确保您正在使用以下Java属性集运行应用程序 立即尝试连接。如果要调试此命令,可以使用以下命令运行jcon

  • 问题内容: 我们正在使用 订阅主题。但是,我们经常遇到错误。我已经使用JavaScript客户端(mqttws31.js)测试了连接,效果很好。表示连接没有问题。 错误:- MQTT消息:- 配置 :- pom.xml: 在调试时:- 在上述方法中,有时会抛出。所以基于catch块,它使用 问题答案: 我只是想分享一下,以防万一。…我有相同的异常,并通过确保生成了唯一的客户端ID(使用 )来解决它

  • 问题内容: 在我的客户端代码中,我正在按照以下步骤连接到套接字: 创建一个套接字 连接它(失败时重试“ x”次) (填写字段后) 使用套接字进行/ 操作: recv(sockDesc, buffer, bufferLen, 0) 套接字描述符并退出 如果在/ 期间断开连接,我发现可以通过返回步骤2进行连接。 这个解决方案可以吗?我应该关闭套接字描述符并返回到步骤1吗? 我无法理解的另一个有趣的观察

  • 问题内容: 当返回的数据不是有效的JSON时,jQuery 静默失败似乎非常不便。为什么用无声失败来实现呢?用更好的故障行为(例如,引发异常或其他方法)执行getJSON的最简单方法是什么? 问题答案: 您可以使用 如果要查看错误原因,请使用完整版本 如果您的JSON格式不正确,则会看到类似 如果网址错误,您会看到类似 如果您试图从另一个域获取JSON,则违反Same-origin策略,则此方法将