我在我的 Android 项目中使用 Retrofit/OkHttp (1.6)。
我没有找到任何内置的请求重试机制。在搜索更多时,我读到 OkHttp 似乎有静默重试。我没有看到在我的任何连接(HTTP 或 HTTPS)上发生这种情况。如何使用 okclient 配置重试?
现在,我正在捕获异常并重试维护计数器变量。
原文由 dev 发布,翻译遵循 CC BY-SA 4.0 许可协议
Resilience4j 提供了一种高度可配置的方式来定义您的重试行为,并将改造适配器作为附加模块。
可用选项的示例:
private final Retry retry = Retry.of("id", RetryConfig.<Response<String>>custom()
.maxAttempts(2)
.waitDuration(Duration.ofMillis(1000))
.retryOnResult(response -> response.code() == 500)
.retryOnException(e -> e instanceof WebServiceException)
.retryExceptions(IOException.class, TimeoutException.class)
.ignoreExceptions(BusinessException.class, OtherBusinessException.class)
.failAfterMaxAttempts(true)
.build());
请参阅 弹性 4j 文档,了解如何将其与 Retrofit 集成。
原文由 msung 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答2.1k 阅读
2 回答5.4k 阅读✓ 已解决
1 回答1.1k 阅读
2 回答1.7k 阅读
1 回答1.3k 阅读
对于改造 2.x;
您可以使用 Call.clone() 方法克隆请求并执行它。
对于改造 1.x;
您可以使用 拦截器。创建自定义拦截器
并在创建 RestAdapter 时使用它。