正如标题所说,我在尝试访问远程数据库时遇到此错误。这是我崩溃日志的一部分:
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!!";
}
}