java - 如何使用 AsyncHttpClient 对错误的 http 代码实现重试功能?

标签 java android-async-http

我需要调用一个 url,并且调用可能会返回错误的 http 代码,例如 404、500 等。我想在收到这些错误时实现重试功能:每小时都会进行一次新的调用,最多十次。

我使用 async-http-client 库来执行异步 POST 调用。

你有什么想法吗?

预先感谢您的帮助。

最佳答案

值得考虑 Spring Retry功能。

API 的构造与您想要重试的内容无关,并且关注重试策略、退避、限制重试次数等。

如果您使用 Java 7/8,另一种可能性是 AsyncRetryExecutor 。例如

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
RetryExecutor executor = new AsyncRetryExecutor(scheduler).
    retryOn(SocketException.class).
    withExponentialBackoff(500, 2).     //500ms times 2 after each retry
    withMaxDelay(10_000).               //10 seconds
    withUniformJitter().                //add between +/- 100 ms randomly
    withMaxRetries(20);

关于java - 如何使用 AsyncHttpClient 对错误的 http 代码实现重试功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195172/

相关文章:

android - 如何将数据从 onSuccess 传递到其他类?

android - 在 Android 中使用虚假的 http 响应测试 Activity

java - GNU-GhostScript-9.06 的商业用途,其许可证为 Gnu-通用公共(public)许可证 V3

java - 如何在 Luna Service (4.4.1) 上使用 Eclipse m2e 将 jar 文件添加到本地 Maven 存储库?

java - 需要更符合逻辑的答案 "Why Java has no multiple inheritance"

android - 无法使用 loopj AsyncHttpClient 和授权 header 进行 POST

android - 从 LoopJ AndroidAsyncHttp 获取 JSON 数据

java - 限制 Web 服务访问内部 IP 地址

java - 在屏幕上移动对象

用于 GPS 服务的 Android 唤醒锁