Java apache httpclient何时调用ServiceUnavailableRetryStrategy
我已经扩展了Apache HttpClient 4.5.3提供的ServiceUnavailableRetryStrategy接口 我对retryRequest方法进行了如下扩展Java apache httpclient何时调用ServiceUnavailableRetryStrategy,java,apache,httpclient,Java,Apache,Httpclient,我已经扩展了Apache HttpClient 4.5.3提供的ServiceUnavailableRetryStrategy接口 我对retryRequest方法进行了如下扩展 @Override public boolean retryRequest(HttpResponse response, int executionCount, HttpContext context) { int statusCode = response.getStatusLine().getStatusC
@Override
public boolean retryRequest(HttpResponse response, int executionCount, HttpContext context) {
int statusCode = response.getStatusLine().getStatusCode();
return false;
}
我希望statusCode的值是任何故障状态代码(4xx或5xx)。然而,我似乎收到了一个200响应代码
我有什么遗漏吗?
文档中提到,这是为了处理服务不可用(503)响应,因此从未期望200响应进入此方法。
如果您对可能出现的错误提出任何建议,我们将不胜感激。似乎
ServiceUnavailableRetryStrategy
是一个更通用的接口,框架将使用它来确定是否应该重试任何类型的错误代码。有一个名为DefaultServiceUnavailableRetryStrategy
的默认实现,它只检查503错误代码。这意味着,当您提供自己的实现时,您还应该检查您感兴趣的特定错误代码(在本例中为503),并做出适当的响应。如果您检查DefaultServiceUnavailableRetryStrategy
的源代码,您可以看到它显式地检查状态代码,如下所示:
return executionCount <= maxRetries &&
response.getStatusLine().getStatusCode() == HttpStatus.SC_SERVICE_UNAVAILABLE;
return executionCount感谢您的澄清@zaerymoghaddam