为什么我的套接字超时?

时间:2015-02-26 10:29:10

标签: android eclipse http networking android-volley

我正在尝试通过Volley访问远程服务,我最终进入了错误响应功能 错误:

02-26 10:29:53.491:D / MyApp(1592):java.net.SocketTimeoutException:5000ms后无法连接到10.10.201.10(端口443)

我可以从浏览器访问此IP,我可以看到界面正常。 为什么我从eclipse / volley得到这个?我该怎么调试呢?

3 个答案:

答案 0 :(得分:1)

您是否将套接字超时值设置为5000毫秒?如果是这样,请求失败,因为它花费超过5000毫秒。尝试增加自定义Request

中的超时值
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);
    }

答案 1 :(得分:1)

  1. 从浏览器访问时的响应时间是多少?是否比Eclipse中的更短?
  2. 如果您知道平均响应时间,则可以增加Eclipse中的超时持续时间。无论您使用哪种库,都必须有一些方法,如setTimeout(int millis)。除非您深入了解服务代码,否则您无法做更多事情。

答案 2 :(得分:0)

您的服务器是否返回任何类型的数据,当read()或accept()中存在阻塞问题时,会出现SocketTimeoutException,即。如果服务器在定义的超时间隔内未返回任何数据,则此异常将上升。它也可能是一个网络问题,某种延迟。