我正在編寫一個連接到web服務的應用程序,如果它無法連接,我不希望它等待太久。因此,我設置了httpparams的connectionTimeout。但它似乎沒有任何影響。Android上的http連接超時不工作
測試我暫時關閉WLAN。應用程序嘗試連接相當一段時間(比我想要的時間多3秒),然後拋出UnknownHostException。
這裏是我的代碼:
try{
HttpClient httpclient = new DefaultHttpClient();
HttpParams params = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 3000);
httppost = new HttpPost(URL);
StringEntity se = new StringEntity(envelope,HTTP.UTF_8);
httppost.setEntity(se);
//Code stops here until UnknownHostException is thrown.
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httppost);
HttpEntity entity = httpResponse.getEntity();
return entity;
}catch (Exception e){
e.printStackTrace();
}
任何人有任何想法我錯過了什麼?
如何通知系統有關超時和需要處理的異常? – vokilam 2011-02-28 08:45:01
@VokilaM:我剛剛編輯了我的答案。 – Cristian 2011-02-28 13:12:05
我在30+秒後仍然收到UnknownHostException。在這種情況下,該設備連接到無線路由器,但沒有互聯網接入。任何線索如何使這個電話處理?否則,我可能會回落到一個外部計時器... :( – hooby3dfx 2013-02-22 21:17:37