验证HttpClient是否正在重试请求

时间:2015-08-28 17:24:33

标签: java apache-httpclient-4.x

昨晚我刚刚了解了DefaultHttpRequestRetryHandler,并尝试使用它并验证我是否正确设置了它并重试了请求。如何验证(通过查看日志消息或设置(单元)测试或进行特定呼叫?

为了记录,这是我的代码:

import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;

DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(3, true));

我已经尝试将网址更改为不存在的端点,更改端口,更改资源位置,但我似乎无法暂停,我可以'看到试图重试请求的代码。

首先,我正在向REST端点发出HTTP调用,并且我想在超时的情况下重试。但是,如果我得到一些我不知道应该做的额外功能和处理,我也很乐意免费获得其他好处。

1 个答案:

答案 0 :(得分:0)

请查看docs。并非所有例外都会重试。默认情况下: InterruptedIOExceptionUnknownHostExceptionConnectExceptionSSLException

您对不良主机/端口的尝试可能会导致未知主机,因此不会重试。你需要超时才能发生。使用像Charles或Fiddler这样的代理。或者使用其他重载的构造函数并提供自己的空例外列表。