【发布时间】:2017-10-10 16:11:04
【问题描述】:
我遇到了 HttpClient 的这个问题,它在发生异常后没有对服务器进行任何尝试。
我最初是使用CloseableHttpClient建立连接的,我发现它时不时地通过IOException。 这可能是由于不同的原因,但我认为客户端会尝试连接到服务器几次。然而,情况似乎并非如此。 我的理解是 CloseableHttpClient 在语句执行后关闭连接和/或发生异常,因此没有重试。
我查看了 HttpClient 并在文档中指出当客户端无法建立连接时会发生自动重试
默认情况下 HttpClient 会自动尝试从 非致命错误,即抛出普通 IOException 时。 HttpClient 将重试该方法 3 次,前提是请求 从未完全传输到目标服务器。如需详细 关于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(new HttpGet(concatURL));
这是我得到 IOException 的地方。
【问题讨论】:
-
与您的问题相关的代码在哪里?
-
我的帖子更新了
标签: apache httpclient ioexception