2013-08-05 107 views
1

在我的應用程序中,我正在從ReST Web服務下載JSON數據。大多數時候,這個工作正常,但有時連接會超時。如何處理HTTP超時?

這是我用來設置超時代碼...

HttpConnectionParams.setConnectionTimeout(httpParameters, 20000); 
HttpConnectionParams.setSoTimeout(httpParameters, 42000); 

如果連接超時,應用程序崩潰和關閉,如何處理超時?

+0

簡單的把'try-catch'塊並捕獲TimeOut。 – user370305

+0

連接超時拋出「java.net.SocketTimeoutException:套接字未連接」,套接字超時「java.net.SocketTimeoutException:操作超時」。所以請嘗試趕上 –

+0

你需要接受虛擬機的答案這是他的想法。 –

回答

4

HttpClient的類會引發ConnectTimeoutException異常,所以你應該聽吧:

try { 
     HttpResponse response = client.execute(post); 
        // do something with response 
    } catch (ConnectTimeoutException e) { 
     Log.e(TAG, "Timeout", e); 
    } catch (SocketTimeoutException e) { 
     Log.e(TAG, " Socket timeout", e); 
    } 
+0

我試圖捕捉這個異常,但它不起作用。 –

+0

修正它以捕獲兩者。 – VM4

1

增加你的等待就像響應時間:

HttpConnectionParams.setConnectionTimeout(httpParameters, 60000); //1 minute 
HttpConnectionParams.setSoTimeout(httpParameters, 90000); // 1.5 minute 
0

我曾試圖抓住各種異常類型,我發現捕獲IOException異常工作,因爲我想!

+2

這是因爲SocketTimeoutException是IOException的子類型。 :) – VM4

+0

@VM啊好吧。謝謝,知道的非常有用 –