我正在编写一个连接到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