用 IOReactorConfig 配置 Apache HttpAsyncClient 5 的 SOCKS 代理
启动 HttpAsyncClient 5 之前,在 reactor 中设置代理地址,不要套用经典客户端的套接字配置。
import java.net.InetSocketAddress;
import org.apache.hc.core5.reactor.IOReactorConfig;
import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
var reactor = IOReactorConfig.custom()
.setSocksProxyAddress(new InetSocketAddress("proxy.example", 1080))
.build();
var client = HttpAsyncClients.custom()
.setIOReactorConfig(reactor)
.build();
client.start();通过这个客户端发送应用所需的异步请求,并保留请求真正的目标 URI。在这批任务执行期间保留客户端,结束后再关闭。对于获准访问的公网目标,SOCKS 代理列表可以提供主机和端口候选;所用 SOCKS 版本应与 reactor 的支持范围匹配。
这条异步套接字路径由 reactor 控制。HTTP 的 HttpHost 代理路由,以及经典连接管理器的 SocketConfig,属于其他接口。
如果需要受支持的 SOCKS 用户名/密码认证,也要在 reactor builder 上设置 setSocksProxyUsername 和 setSocksProxyPassword。应在 start 之前完成配置,不要在请求运行期间修改共享设置。