2013-02-06 58 views
0

我有一個Java servlet請求一些其他服務器的請求,另一臺服務器有一個默認超時2分鐘的Apache服務器。Httpurlconnection超時沒有發生

我有兩個網址需要調用,如果第一個網址失敗了,那麼我需要調用第二個網址,但是第一個網址需要2分鐘的默認時間才能超時。但我並不需要它超時這樣的,在10秒後說,如果還未獲得的結果,那麼我需要調用第二個URL

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

我有也嘗試setreadtimeout,在任何情況下它不工作 – raghul

+0

是的,NSURLConnection的setTimeout不準確,我們總是添加一個計時器來控制它。 – yebw

回答

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 
      } 
     }