在java中手动超时httpurlconnection

在java中手动超时httpurlconnection,java,timeout,settimeout,httpurlconnection,Java,Timeout,Settimeout,Httpurlconnection,我已尝试按以下方式超时httpurlconnection URL urlConnect = new URL(url.toString()); HttpURLConnection.setFollowRedirects(false); HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection(); urlc.setConnectTimeout(1000*5); urlc.setReadTimeout(1000*5);

我已尝试按以下方式超时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秒,在这种情况下,如何手动超时httpurlconnection

以下是Java手册对connectTimeout和readTimeout的说明:

连接超时

设置指定的超时值(以毫秒为单位),以便在 打开与此引用的资源的通信链接 URLConnection。如果超时在连接恢复之前过期 建立后,将引发java.net.SocketTimeoutException。暂停 零被解释为无限超时

读取超时

将读取超时设置为指定的超时(以毫秒为单位)。A. 非零值指定从输入流读取时的超时 当与资源建立连接时。如果超时过期 在有数据可供读取之前,先 引发java.net.SocketTimeoutException。超时值为零是错误的 解释为无限超时


所以我认为在你的例子中,你在不到5秒钟的时间内建立了通信链接,并且你没有读取任何输入流。因此,行为是正确的(等待Apache超时)

以下是Java手册对connectTimeout和readTimeout的说明:

连接超时

设置指定的超时值(以毫秒为单位),以便在 打开与此引用的资源的通信链接 URLConnection。如果超时在连接恢复之前过期 建立后,将引发java.net.SocketTimeoutException。暂停 零被解释为无限超时

读取超时

将读取超时设置为指定的超时(以毫秒为单位)。A. 非零值指定从输入流读取时的超时 当与资源建立连接时。如果超时过期 在有数据可供读取之前,先 引发java.net.SocketTimeoutException。超时值为零是错误的 解释为无限超时

所以我认为在你的例子中,你在不到5秒钟的时间内建立了通信链接,并且你没有读取任何输入流。因此行为是正确的(等待Apache超时)