为什么我会出现套接字超时?
Why do I get a socket time out?
我正在尝试通过 Volley 访问远程服务,但我最终进入了错误响应功能
错误:
02-26 10:29:53.491: D/MyApp(1592): java.net.SocketTimeoutException: 5000 毫秒后无法连接到 10.10.201.10(端口 443)
我可以从我的浏览器访问这个IP,我可以看到界面很好。
为什么我从 eclipse/volley 得到这个?我该如何调试?
您是否将套接字超时值设置为 5000 毫秒?如果是这样,则请求失败,因为它花费的时间超过 5000 毫秒。尝试增加自定义 Request
class
中的超时值
public static final int MY_SOCKET_TIMEOUT_MS = 30000;
@Override
public Request<?> setRetryPolicy(RetryPolicy retryPolicy) {
retryPolicy = new DefaultRetryPolicy(MY_SOCKET_TIMEOUT_MS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES , DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
return super.setRetryPolicy(retryPolicy);
}
- 从浏览器访问它的响应时间是多少?它比 Eclipse 中的更短吗?
- 如果您知道平均响应时间,则可以增加 Eclipse 中的超时持续时间。无论你使用什么库,都必须有像
setTimeout(int millis)
这样的方法。除非深入研究服务代码,否则您无能为力。
你的服务器 return 是否有任何类型的数据,当 read() 或 accept() 中出现阻塞问题时会发生 SocketTimeoutException,即。如果服务器在定义的超时间隔内没有 return 任何数据,则会出现此异常。也可能是网络问题,某种延迟。
我正在尝试通过 Volley 访问远程服务,但我最终进入了错误响应功能 错误:
02-26 10:29:53.491: D/MyApp(1592): java.net.SocketTimeoutException: 5000 毫秒后无法连接到 10.10.201.10(端口 443)
我可以从我的浏览器访问这个IP,我可以看到界面很好。 为什么我从 eclipse/volley 得到这个?我该如何调试?
您是否将套接字超时值设置为 5000 毫秒?如果是这样,则请求失败,因为它花费的时间超过 5000 毫秒。尝试增加自定义 Request
class
public static final int MY_SOCKET_TIMEOUT_MS = 30000;
@Override
public Request<?> setRetryPolicy(RetryPolicy retryPolicy) {
retryPolicy = new DefaultRetryPolicy(MY_SOCKET_TIMEOUT_MS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES , DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
return super.setRetryPolicy(retryPolicy);
}
- 从浏览器访问它的响应时间是多少?它比 Eclipse 中的更短吗?
- 如果您知道平均响应时间,则可以增加 Eclipse 中的超时持续时间。无论你使用什么库,都必须有像
setTimeout(int millis)
这样的方法。除非深入研究服务代码,否则您无能为力。
你的服务器 return 是否有任何类型的数据,当 read() 或 accept() 中出现阻塞问题时会发生 SocketTimeoutException,即。如果服务器在定义的超时间隔内没有 return 任何数据,则会出现此异常。也可能是网络问题,某种延迟。