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.

Ähnliche Artikel