HttpClient
执行请求4次。如果它没有超时那么它工作正常。它与HttpClient
?
答案 0 :(得分:5)
如果失败,我发现执行请求4次是HttpClient
的默认行为。我不确定其他类型的失败,但至少有时间。
要禁用此行为,请执行以下操作:
DefaultHttpClient client = new DefaultHttpClient();
// Disable default behavior of HttpClient of retrying requests in case of failure
((AbstractHttpClient) client).setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(0, false));
此处重试次数设置为0
以禁用重试。
我从this blog找到了解决方案。
答案 1 :(得分:3)
这解决了我的问题。使用httpclient 4.3及以上版本。
HttpClientBuilder.create().disableAutomaticRetries().build();
答案 2 :(得分:1)
Apache HttpClient在传输异常的情况下尝试连接5次。以下是doc所说的内容:
HttpClient将自动重试那些方法的5倍 HTTP请求仍在运行时因传输异常而失败 传输到目标服务器(即请求尚未完全 传送到服务器)。
要更改此行为,您需要实现HttpMethodRetryHandler
接口