Httpurlconnection超时没有发生

时间:2013-02-06 05:21:24

标签: java timeout httpurlconnection connection-timeout

我有一个java servlet向其他服务器请求一些请求,另一个服务器有一个apache服务器,默认超时为2分钟。

我有两个url要调用,如果第一个url失败,那么我需要调用第二个url,但是会发生的是第一个url需要2分钟的默认时间才能超时。但我不要求它像这样超时,如果没有获得结果10秒后说我需要调用第二个网址

URL urlConnect = new URL(url.toString());
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection();
urlc.setConnectTimeout(1000*20);
urlc.connect();

1 个答案:

答案 0 :(得分:0)

抓住一个SocketTimeoutException:

try{ 
         boolean timeout = false;
         URL urlConnect = new URL(url.toString());
         HttpURLConnection.setFollowRedirects(false);
         HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection();
         urlc.setConnectTimeout(10000); // 10 sec
         urlc.setReadTimeout(10000); // 10 sec
         urlc.connect();
       }catch(SocketTimeoutException e){
           timeout = true;
       }finally{
          if(timeout){
             handleSecoundRequestFunction(); //the same principle as by first connection
          }
       }