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 之前完成配置,不要在请求运行期间修改共享设置。

相关文章