对于经典 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 具有不同的配置接口。旧的类配方无法解释一个从不使用那一代的客户端。

相关文章