java.net.SocketTimeoutException error with Retrofit and OkHt



正如标题所说,我在尝试访问远程数据库时遇到此错误。这是我崩溃日志的一部分:

retrofit.RetrofitError: failed to connect to xx.xx.xx.xx/xx.xx.xx.x (port 80) from /xx.xx.xx.xx (port 52908) after 15000ms
Caused by: java.net.SocketTimeoutException: failed to connect to xx.xx.xx.xx/xx.xx.xx.x (port 80) from /xx.xx.xx.xx (port 52908) after 15000ms

该应用程序运行良好,因为我在各种设备上对其进行了测试,并且服务器已启动并运行。

解决方法是增加timeout但是还有其他方法可以解决此问题吗?我读到的所有帖子都提到这一点,只建议设置一个高timeout。还是我应该只设置发生此问题的用例并提醒用户检查他的连接?

任何建议都非常感谢

注意:

  • 我正在使用的改造版本是:1.9.0
  • OkHttp3 版本是 3.0.1

您很可能收到此异常,因为您尝试从请求中读取数据,但它超过了默认超时值

这可能是网络连接问题,或者后端 API 由于某种原因需要很长时间才能响应。因此,除了增加默认超时之外,无法从客户端解决此问题

这可能是一个

  • 连接超时
  • 读取超时
  • 写入超时

确定您的案例中发生的超时类型,并将客户端附加到改造

Show Exception Message

@Override
public void onFailure(Call<ResponseType> call, Throwable t) {
if(t instanceof SocketTimeoutException){
String message = "Socket Time out!!";
}
}

最新更新