Apache HttpAsyncClient 5 の SOCKS プロキシを IOReactorConfig で設定する
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 プロキシリストからホストとポートの候補を選べます。reactor が対応する SOCKS バージョンに合わせてください。
この非同期ソケットの経路を制御するのは reactor です。HTTP の HttpHost プロキシルートや、従来型接続マネージャーの SocketConfig は別のインターフェースです。
対応する SOCKS のユーザー名・パスワード認証を使う場合は、reactor の builder に setSocksProxyUsername と setSocksProxyPassword も設定します。リクエストの実行中に共有設定を変えず、start の前に設定を終えてください。