我遇到了HttpClient的这个问题,在发生异常后它没有对服务器进行任何尝试。
我最初使用 CloseableHttpClient 来建立连接,我发现它不时地通过 IOException 。 这可能是出于不同的原因,但我认为客户端将尝试连接几次服务器。然而,事实似乎并非如此。 我的理解是,CloseableHttpClient在语句执行后关闭连接和/或发生异常,因此没有重试。
我查看了 HttpClient ,并在文档中指出,当客户端无法建立连接时会发生自动重试
默认HttpClient会自动尝试从中恢复 非致命错误,即抛出普通IOException时。 如果请求,HttpClient将重试该方法三次 从未完全传输到目标服务器。详细说明 关于HTTP方法恢复的讨论请参考HttpClient 异常处理指南
因此,如果发生IOException,则应该尝试更多。
我应该使用什么方法来确保当客户端尝试与服务器建立连接时,如果失败,它会尝试多次?
private Map<String, String> queryResults(String query) throws OrnClientException {
try {
HttpResponse response = httpClient.execute(new HttpGet(concatURL));
final String result = EntityUtils.toString(response.getEntity());
return extractMapFromQueryResults(result);
} catch (IOException e) {
}
}
httpClient.execute(新的HttpGet(concatURL));
这是我获得IOException的地方。