Apache HttpClient 5.5 include un percorso di configurazione SOCKS nelle impostazioni socket del gestore delle connessioni. Il suo esempio mantenuto usa 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();

Il frammento usa i pacchetti org.apache.hc di HttpClient 5 e SocketConfig di HttpCore. Le richieste effettuate con questo client usano il pool configurato sopra. Chiudere il client quando l'ambito di proprietà dell'applicazione termina.

Impostare l'URL reale del sito sulla richiesta come al solito. Per le richieste consentite verso siti pubblici senza autenticazione proxy, la lista di proxy SOCKS offre indirizzi candidati; scegliere una versione di SOCKS supportata dall'ambiente di esecuzione reale. L'indirizzo SOCKS configura il trasporto usato per raggiungerlo; non è una route proxy inoltrata HTTP fornita come HttpHost.

Queste sono le impostazioni socket predefinite per questo gestore. Un'applicazione che usa un resolver SocketConfig per route dovrebbe invece applicare l'impostazione SOCKS desiderata tramite quella politica. L'esempio conserva la normale politica DNS di destinazione del gestore delle connessioni; la risoluzione remota dei nomi richiede una configurazione verificata separatamente.

Articoli correlati