问题描述
我正在写一个连接到Web服务的应用程序,我不希望它等待太久,如果它不能得到一个连接。因此,我设置的HttpParams的为ConnectionTimeout。但它似乎没有任何有任何效果。
I'm writing an application that connects to a webservice and I don't want it to wait too long if it can't get a connection. I therefore set the connectionTimeout of the httpparams. But it doesn't seem to have any effect whatsoever.
要测试我把我的WLAN暂时的。该应用程序试图连接相当长的一段时间(超过秒3我想要的方式更多),然后抛出一个UnknownHostException。
To test I turn of my WLAN temporarily. The application tries to connect for quite some time (way more than the 3 seconds I want) and then throws an UnknownHostException.
下面是我的code:
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();
}
任何人有任何想法我错过了吗?
Anyone have any ideas what I missed?
推荐答案
试着做这种方式:
HttpPost httpPost = new HttpPost(url);
StringEntity se = new StringEntity(envelope,HTTP.UTF_8);
httpPost.setEntity(se);
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 3000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
BasicHttpResponse httpResponse = (BasicHttpResponse) httpClient.execute(httpPost);
HttpEntity entity = httpResponse.getEntity();
return entity;
您才能捕捉可能的<$c$c>ConnectTimeoutException$c$c>.
You then can catch a possible ConnectTimeoutException
.
这篇关于在Android HTTP连接超时不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!