SOCKS-Einstellungen in Apache HttpClient 5.5 am Connection Manager
Konfigurieren Sie die Socket-Richtlinie des Pools mit SocketConfig statt einer HTTP-Proxy-Route oder einer eigenen Socket-Factory.
Apache HttpClient 5.5 enthält einen SOCKS-Konfigurationsweg in den Socket-Einstellungen des Connection Managers. Das gepflegte Beispiel verwendet setSocksProxyAddress:
InetSocketAddress socks =
new InetSocketAddress("proxy.example.net", 1080);
PoolingHttpClientConnectionManager manager =
PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultSocketConfig(
SocketConfig.custom()
.setSocksProxyAddress(socks)
.build()
)
.build();
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(manager)
.build();
Das Fragment nutzt die org.apache.hc-Pakete von HttpClient 5 und SocketConfig von HttpCore. Anfragen mit diesem Client verwenden den oben konfigurierten Pool. Schließen Sie den Client, wenn der Eigentumsbereich der Anwendung endet.
Setzen Sie die tatsächliche Website-URL wie gewohnt auf die Anfrage. Für erlaubte Anfragen an öffentliche Websites ohne Proxy-Authentifizierung bietet die SOCKS-Proxy-Liste Kandidatenadressen; wählen Sie eine SOCKS-Version, die die tatsächliche Laufzeitumgebung unterstützt. Die SOCKS-Adresse konfiguriert den Transport, mit dem sie erreicht wird; sie ist keine als HttpHost übergebene HTTP-Forward-Proxy-Route.
Dies sind Standard-Socket-Einstellungen für diesen Manager. Eine Anwendung mit einem SocketConfig-Resolver pro Route sollte die gewünschte SOCKS-Einstellung stattdessen über diese Richtlinie anwenden. Das Beispiel behält die normale DNS-Richtlinie des Connection Managers für das Ziel bei; die entfernte Namensauflösung erfordert eine separat geprüfte Konfiguration.