Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpClient SocketTimeoutException处理_Java_Httpclient_Socket Timeout Exception - Fatal编程技术网

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