2011-12-19 78 views
1

我想從遠程服務器獲取一些數據。爲了達到這個我使用HttpURLConnection。問題是,有時連接後的服務器建立只是掛起或什麼,沒有關閉連接,我掛在那裏。也是掛線程獲得了鎖,那麼所有其他所有線程都只是吸吮:d 代碼:Java http讀取超時問題

try { 
     URL url = new URL(urlString); 
     URLConnection urlConnection = url.openConnection(); 
     HttpURLConnection connection = (HttpURLConnection) urlConnection; 

     BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(CharEncoding.UTF_8))); 
     StringBuilder sb = new StringBuilder(); 
     String line; 
     while ((line = br.readLine()) != null) { 

最後一行是我們都掛。我找到了方法setConnectTimeout(timeout),但似乎並非如此,因爲它在連接建立之前已超時。什麼是解決這種情況的常用方法?

+0

超時連接建立之前?那麼你不會一直到while循環,或者我誤解了一些東西? – posdef 2011-12-19 15:49:42

+0

對不起,我寫了不明白在這裏。我的意思是在類HttpURLConnection中找到這樣的方法;)沒有超時在我的代碼.. – whatswrong 2011-12-20 10:09:04

+0

無後顧之憂我很高興,如果我可以幫助解決這個問題,不管它是什麼:) – posdef 2011-12-20 10:18:07

回答

3

假設你的意思是超時(讀期間可能)建立連接後,如何對這樣的事情

URLConnection urlConnection = url.openConnection(); 
urlConnection.setConnectTimeout(c_timeout); 
urlConnection.setReadTimeout(r_timeout); 
stream = urlConnection.getInputStream(); 
+0

哦,我沒有找到這種方法。似乎讀取超時將解決此問題。謝謝!將嘗試明天。 – whatswrong 2011-12-19 15:51:20