2013-02-11 38 views
1

我试图以下述方式手动超时在Java 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(); 

超时HttpURLConnection类,但未能进行连接,其采取通过的Apache Tomcat分配2分钟超时的代替5秒gthat超时我已经提供了,在这种情况下,如何能够在手动超时的HttpURLConnection的

回答

6

下面是什么样的Java手动两种connectTimeout和readTimeout说:

connectTimeout

设置 打开到此 URLConnection引用的资源的通信链接时要使用的指定超时值(以毫秒为单位)。如果在建立连接之前超时已到期,则会引发java.net.SocketTimeoutException。 零的超时被解释为无限超时。

readTimeout

将读超时设置为指定的超时,以毫秒为单位。 A 非零值指定在建立到资源的连接时从输入流 中读取时的超时时间。如果在有数据可供读取之前超时期满 ,则会引发一个 java.net.SocketTimeoutException。超时为零是 解释为无限超时。

因此,我认为在你的情况下,你设法在不到5秒的时间内建立通信链接,并且你没有读取任何输入流。因此,行为是正确的(等到阿帕奇超时)