代理失败时 OkHttp 会直接连接吗?
根据客户端版本、路由候选与应用的重试路径,判断失败的代理是否可能导致直连。
在系统 HTTP 代理的历史情形中,OkHttp 在 3.5.0 中改变了行为:该代理失败后,它不再尝试直接连接。较早关于静默回退的报告可能描述的是这一变更之前的行为。
那段历史并不能裁定每个应用的路由策略。要解读你自己应用中的报告,请遵循以下三项检查:
- 查明解析到的 OkHttp 版本。 使用应用的依赖信息,包括框架实际打包的版本,而不是所复制示例的年代。
- 查明此客户端如何选择路由。 显式代理与自定义 ProxySelector 是不同的配置。如果选择器在代理之后提供了直连候选,那就是在提供直连替代方案。
- 跟踪失败处理程序。 查找用另一个客户端重试的应用代码。该替代实现发出的直接请求不属于第一个客户端的决策范围。
对于强制代理要求,相关客户端策略必须停止,而不是提供直连替代方案。请对照该要求检查实际的客户端与重试路径;仅凭 3.5.0 的变更并不构成整机范围的流量规则。