You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HttpClient5中HttpRequestRetryHandler与ServiceUnavailableRetryStrategy替代类及代码改写

HttpClient5 中 HttpRequestRetryHandler 和 ServiceUnavailableRetryStrategy 的替代方案

一、原 HttpRequestRetryHandler 的替代

原 org.apache.http.client.HttpRequestRetryHandler 在 HttpClient5 中被替换为 org.apache.hc.client5.http.io.HttpRequestRetryStrategy 接口,默认实现类是 org.apache.hc.client5.http.impl.io.DefaultHttpRequestRetryStrategy。

同时,原构建器中的 setRetryHandler() 方法需要改为 setRetryStrategy()。

二、原 ServiceUnavailableRetryStrategy 的替代

原 org.apache.http.client.ServiceUnavailableRetryStrategy 对应 HttpClient5 中的 org.apache.hc.client5.http.ServiceUnavailableRetryStrategy 接口,默认实现类是 org.apache.hc.client5.http.impl.DefaultServiceUnavailableRetryStrategy。

构建器中的方法名 setServiceUnavailableRetryStrategy() 保持不变,但引用的类包路径已更新。

改写后的代码示例

导入语句:

import org.apache.hc.client5.http.io.HttpRequestRetryStrategy;
import org.apache.hc.client5.http.ServiceUnavailableRetryStrategy;
import org.apache.hc.core5.http.HttpContext;
import org.apache.hc.core5.http.HttpResponse;
import java.io.IOException;

构建器代码:

.setRetryStrategy(new HttpRequestRetryStrategy() {
    @Override
    public boolean retryRequest(IOException exception, int execCount, HttpContext context) {
        // 原重试逻辑代码
    }

    // 新增方法:需实现重试间隔逻辑
    @Override
    public long getRetryInterval() {
        // 返回重试间隔(毫秒),示例为1秒
        return 1000;
    }
})
.setServiceUnavailableRetryStrategy(new ServiceUnavailableRetryStrategy() {
    @Override
    public boolean retryRequest(HttpResponse response, int execCount, HttpContext context) {
        // 原重试逻辑代码
    }

    // 新增方法:需实现重试间隔逻辑
    @Override
    public long getRetryInterval() {
        return 1000;
    }
})

注意:HttpClient5 的两个重试策略接口都新增了 getRetryInterval() 方法,必须实现该方法指定重试间隔时间。

内容的提问来源于stack exchange,提问作者CodeLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:01:26