异常

时间:2017-10-10 16:11:05

标签: apache httpclient ioexception

我遇到了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的地方。

1 个答案:

答案 0 :(得分:0)

我建议您在创建客户端时使用DefaultHttpRequestRetryHandler

这应该重试你的请求你设置它的次数,只要它不是默认的例外。