外观
如何使用 OkHttp 实现请求重试、超时控制和连接池复用?
标准回答
复用同一个 OkHttpClient 以共享连接池;在 Builder 配置 connectTimeout、readTimeout、writeTimeout,必要时配置 callTimeout 限制整个调用。retryOnConnectionFailure 处理部分可恢复连接故障;业务重试要另设次数、退避和幂等规则,不能把所有 HTTP 错误都自动重发。
通俗例子
图片下载网络抖动可重试;创建订单超时却不能盲目重发,因为服务端可能已经创建。通常复用 OkHttpClient 以共享连接资源。
深入解释
**几个超时分别管什么:**连接超时限制建连等待,读写超时限制相应 I/O 阶段,总调用超时限制整次操作。它们不是同一个计时范围。
**复用与重试也要分开:**连接池减少重复建连和握手;重试是在失败后再尝试。请求可能已被服务端执行,涉及写操作时要先有幂等或结果查询规则。
内容来源
- Android · AI Agent 知识手册 · 原条目
6.1.2