问题描述
我一直在为这个问题寻找答案,但没有找到。
有很多技术可以让我们在 OkHttp 中通过改造实现重试并对其进行配置
根据文档https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/-builder/retry-on-connection-failure/ 有趣的 retryOnConnectionFailure(retryOnConnectionFailure:Boolean): Builder
我们可以配置是否需要重试。并且默认值为true。
但是OkHttp默认的重试机制是什么
电话会打多少次?
OkHttp 默认的指数逻辑是什么?
任何人都可以帮忙
解决方法
OkHttp 会在以下一般情况下尝试重试请求
- 错误是连接错误并且存在替代路由(DNS 地址、代理等) - https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/-builder/retry-on-connection-failure/
- 请求已尝试,但响应表明重试是安全的,并且请求是可重复的。 (408 条回复 - https://github.com/square/okhttp/pull/2302)
OkHttp 没有为此提供高级逻辑,如果您需要特定的重试逻辑,您可以考虑禁用任何自动重试并准确实施您需要的策略。
另见https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace