Java HttpClient SocketTimeoutException处理
我使用Java HttpClient SocketTimeoutException处理,java,httpclient,socket-timeout-exception,Java,Httpclient,Socket Timeout Exception,我使用HttpClient 现在,当我在10秒内无法从API服务器获得任何响应时,我应该处理 所以我做得很好 HttpClient httpClient = new DefaultHttpClient(); HttpParams httpParams = httpClient.getParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 10000); HttpConnectionParams.setSoTimeout(h
HttpClient
现在,当我在10秒内无法从
API服务器获得任何响应时,我应该处理
所以我做得很好
HttpClient httpClient = new DefaultHttpClient();
HttpParams httpParams = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);
HttpPost httpPost = new HttpPost("api server address");
httpPost.setParams(...);
HttpResponse response;
try{
response = httpClient.execute(httpPost);
} catch(SocketTimeoutException e){
httpPost.setParams(...); // change param
response = httpClient.execute(httpPost);
}
事情发生得像
singleclientconnmanager的使用无效:连接仍然分配。
这是有道理的,但我不知道如何处理 问题
invalid use of singleclientconnmanager: connection still allocated.
在控制块进入异常块(即存在任何异常)时调用execute()方法两次后发生
try{
// First Call
response = httpClient.execute(httpPost);
} catch(SocketTimeoutException e){
httpPost.setParams(...); // change param
//Second Call
response = httpClient.execute(httpPost);
}
处理这个问题的优雅方法是使用HTTPRequestRetryHandler
您必须使用新的HttpClient
。