Apache http 客户端重试重定向

问题描述

我正在使用 apache http 客户端并想下载文件。外部服务具有以下功能

  1. 要下载文件,我向 https://base.url/path/to/file 发送 GET 请求
  2. 重定向到 URL,实际上我可以开始下载文件

问题是文件可以在一堆 url 上定位(复制),并且不是所有的都可以访问(有些主机甚至不能解析为 IP)。

我已将重试处理程序设置为我的自定义 http 客户端:

HttpClients.custom()
            .setRetryHandler(new HttpRequestRetryHandler(4))
            .setRedirectStrategy(new LaxRedirectStrategy())
            ...
            .build();
class HttpRequestRetryHandler extends DefaultHttpRequestRetryHandler {
    public HttpRequestRetryHandler(int retryCount) {
        super(retryCount,true,Arrays.asList(InterruptedioException.class,SSLException.class));
    }

    @Override
    protected boolean handleAsIdempotent(HttpRequest request) {
        String method = request.getRequestLine().getmethod().toupperCase(Locale.ROOT);
        return "GET".equals(method);
    }
}

但问题是重试仅在重定向后应用。因此,如果我无法访问重定向的 URL,那么 httpClient 将对其执行 4 个请求(所有请求都将失败)。 如何对初始 URL 应用重试?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)