让 Apache HttpClient 5 读取 JVM 代理设置
让 Apache HttpClient 5 客户端启用系统属性,并检查显式的路由规划器覆盖。
对于经典 API 的 Apache HttpClient 5,在构建客户端时启用系统属性:
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
try (CloseableHttpClient client = HttpClients.custom()
.useSystemProperties()
.build()) {
// Execute the application's HTTP work with this client.
}提供 预期的启动参数,例如 -Dhttp.proxyHost=203.0.113.10 -Dhttp.proxyPort=8080,并使用你真实的端点。HTTP 代理列表 在该路由被允许时提供公共候选。为相关目标包含 HTTPS 和绕过属性。仅设置 JVM 属性并不能证明该客户端会使用它。
构建器参考文档 说明了其默认组件会考虑哪些属性。显式的路由规划器或其他所提供的组件可以改变该行为。
通过这个已配置的实例发出请求。构建另一个客户端的依赖需要它自己受支持的工厂或代理输入;旁边一个未使用的客户端不会改变任何东西。
在失败的操作中确定库和导入。Commons HttpClient 3、Apache HttpClient 4、HttpClient 5 以及 Java 的 java.net.http.HttpClient 具有不同的配置接口。旧的类配方无法解释一个从不使用那一代的客户端。