【问题标题】:Manually time out a httpurlconnection in java在java中手动超时httpurlconnection
【发布时间】:2013-01-26 05:04:51
【问题描述】:
我已尝试通过以下方式使 httpurlconnection 超时
URL urlConnect = new URL(url.toString());
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection();
urlc.setConnectTimeout(1000*5);
urlc.setReadTimeout(1000*5);
urlc.connect();
但连接失败,它使用 apache tomcat 分配的 2 分钟超时,而不是我提供的 5 秒 g,在这种情况下如何手动超时 httpurl 连接
【问题讨论】:
标签:
java
timeout
settimeout
httpurlconnection
【解决方案1】:
以下是 Java 手册对 connectTimeout 和 readTimeout 的说明:
连接超时
设置一个指定的超时值,以毫秒为单位,当
打开到此引用的资源的通信链接
网址连接。如果在连接之前超时过期
建立后,会引发 java.net.SocketTimeoutException。超时
零被解释为无限超时。
读取超时
将读取超时设置为指定的超时,以毫秒为单位。一种
非零值指定从输入流读取时的超时
当与资源建立连接时。如果超时到期
在有数据可供读取之前,a
引发 java.net.SocketTimeoutException。超时为零是
解释为无限超时。
所以我认为在您的情况下,您设法在不到 5 秒的时间内建立了通信链接,并且您没有读取任何输入流。因此行为是正确的(等到 Apache 超时)