微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache http 客户端重试重定向

如何解决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 举报,一经查实,本站将立刻删除。