Apache HttpClient 知道密码却一直收到 407
让 Apache HttpClient 的代理凭据与实际选中的代理路由相匹配,并区分认证质询与登录失败。
提供方里的密码正确,并不等于为实际选中的代理建立了匹配的凭据。先核对该端点的协议、主机和端口;主机字段通常只接受主机名或 IP,而不是完整 URL。
- 通读整个认证交互过程。一次 407 之后重试被接受 可能属于正常情况。在把登录判定为被拒绝之前,先确认最终结果仍然是 407。
- 比较路由与凭据作用域。 将实际的主机/端口与所部署的 HttpClient 5 AuthScope 定义的其他字段进行匹配。端口写错可能使 BasicCredentialsProvider 找不到合适的条目。
- 检查请求方法与身份。 代理是否提供了受支持的方法?重试是否使用了预期的连接?运营方是否要求带域限定的账号或其他有文档说明的格式?
使用已安装的主版本 API。HttpClient 4 的认证缓存做法不能原样搬到版本 5。应遵循运营方的账号要求,而不是遍历随意的用户名变体。
抢先认证是另一种刻意的选择。对于兼容的协议,它可以省去一次往返,但它改变了凭据发出的时机,并且需要受支持的作用域。对于端点不匹配或方法不受支持的情况,它不能作为第一项修复。
把被质询的代理身份、方法、作用域匹配情况和最终状态保留在经过脱敏的 诊断信息 中。密码和带有凭据的原始跟踪记录对这项比较并非必需。