Apache HttpClient:重试故障安全结果 400(错误请求)

Apache HttpClient : Retry with failsafe results in 400 (bad request)

我正在使用 Apache HttpClientFailsafe java 库。下面是(伪)代码的样子:

RetryPolicy<CloseableHttpResponse> policy = new RetryPolicy<>()
                .handleResultIf(/* Response code is 404 */)
                .withMaxRetries(5)
                .withDelay(Duration.ofSeconds(10));

CloseableHttpResponse response = Failsafe.with(policy).get(() -> httpClient.execute(myRequest));

它正在 localhost 调用测试端点,我模拟它执行以下操作:

现在,当我执行上面的代码时,我看到了以下行为:

  1. HttpClient 发送 get 请求,结果为 404
  2. 由于响应是 404,重试策略启动并重试请求
  3. 重试请求失败400没有实际到达代理
  4. 所有后续重试都失败并显示 400。响应没有任何正文

我希望第 2 步中的请求能够命中我的模拟,但是,它没有命中就失败了。 HttpClient 是否缓存响应或尝试阻止后续重试?

显然,在为 httpClient 调用 execute 之前,我在使用 addHeader 方法的请求中设置了 headers。这导致请求具有重复的 Content-TypeAuthorization headers.

由于这些 header 值肯定无效,请求导致 400 错误而没有命中 url。