Apache HttpClient 5 Fluent 中使用 Executor 进行代理认证
将 Fluent Request 的 viaProxy 路由与 Apache HttpClient 5 Executor 上的凭据配合使用。
在 Apache HttpClient 5 的 Fluent API 中,Request 可以选择代理,而 Executor 负责提供其账户。请通过该带凭据的对象执行请求:
HttpHost proxy = new HttpHost("http", "proxy.example", 8080);
Executor executor = Executor.newInstance()
.auth(proxy, proxyUser, proxyPassword.toCharArray());
String body = executor.execute(
Request.get("https://www.example.com/").viaProxy(proxy))
.returnContent()
.asString();
Executor 和 Request 来自 org.apache.hc.client5.http.fluent;HttpHost 来自 org.apache.hc.core5.http。账户变量来自应用的配置。
两处代理用法有意描述同一个主机和端口。viaProxy 选择路由,而 auth 为该中间人向 Executor 注册凭据。如果最终结果仍为 407,请将所选路由与凭据作用域进行对比。
调用另一个 Request 的便捷 execute 方法会走另一条执行路径。如示例所示,应让带凭据的 Executor 始终附着在该操作上,这样收到质询的客户端才拥有已配置的账户。
示例使用 5.x 的 char-array 密码接口。较早的 HttpClient 4 Fluent 片段使用不同的包和方法签名。请求完成后,returnContent 会消费响应实体并释放连接以供复用。