昨晚我刚刚了解了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调用,并且我想在超时的情况下重试。但是,如果我得到一些我不知道应该做的额外功能和处理,我也很乐意免费获得其他好处。
答案 0 :(得分:0)
请查看docs。并非所有例外都会重试。默认情况下:
InterruptedIOException
,UnknownHostException
,ConnectException
,SSLException
您对不良主机/端口的尝试可能会导致未知主机,因此不会重试。你需要超时才能发生。使用像Charles或Fiddler这样的代理。或者使用其他重载的构造函数并提供自己的空例外列表。