Spring 6 RestTemplate 配合 HttpClient 5 的代理设置
只有在失败的 RestTemplate 使用与之匹配的 request factory 时,配置好的路由与账户才会生效。
顺着生效的客户端实例往回追:RestTemplate → request factory → 底层 HTTP 客户端 → 代理路由/账户。把 helper 配置在另一个被注入的 bean 旁边,并不会改变那个 bean 的调用。
构建顺序是:
- 设置底层客户端的代理路由以及限定在端点范围的凭据。
- 把该客户端交给兼容的 HTTP-components request factory。
- 在真正执行操作的 RestTemplate 中使用该 factory。
Spring Framework 6 的 factory 需要 Apache HttpComponents 5.1 或更高版本。HttpClient 4 的 builder、凭据和构造函数属于另一个世代。factory 构造错误会出现在 407 所代表的后续网络/认证路径之前。
通用的 request interceptor 若直接添加 Proxy-Authorization,可能会错过更早的 HTTPS CONNECT 交换。请把代理账户和目标账户放在各自支持的 transport/auth 接口上,并保留 TLS 校验。
写报告时,请保留 Spring/客户端世代、生效的 bean/factory、代理以及最终错误阶段,且不要包含密钥。