Apache HttpClient 5.5 zawiera ścieżkę konfiguracji SOCKS w ustawieniach gniazd menedżera połączeń. Jego utrzymywany przykład używa 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();

Fragment używa pakietów org.apache.hc HttpClient 5 oraz SocketConfig HttpCore. Żądania wykonywane tym klientem korzystają z puli skonfigurowanej powyżej. Zamknij klienta, gdy zakończy się zakres własności aplikacji.

Umieść rzeczywisty adres URL witryny w żądaniu jak zwykle. Dla dozwolonych żądań do witryn publicznych bez uwierzytelniania proxy lista proxy SOCKS oferuje adresy kandydujące; wybierz wersję SOCKS obsługiwaną przez rzeczywiste środowisko uruchomieniowe. Adres SOCKS konfiguruje transport używany do jego osiągnięcia; nie jest to trasa proxy przekazującego HTTP podana jako HttpHost.

To są domyślne ustawienia gniazd tego menedżera. Aplikacja korzystająca z resolvera SocketConfig dla każdej trasy powinna zastosować żądane ustawienie SOCKS poprzez tę politykę. Przykład zachowuje zwykłą politykę DNS miejsca docelowego menedżera połączeń; zdalne rozwiązywanie nazw wymaga osobno zweryfikowanej konfiguracji.

Powiązane artykuły