Apache HttpClient 5.5 include o cale de configurare SOCKS în setările de socket ale managerului de conexiuni. Exemplul său întreținut folosește 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();

Fragmentul folosește pachetele org.apache.hc ale HttpClient 5 și SocketConfig din HttpCore. Cererile făcute cu acest client folosesc pool-ul configurat mai sus. Închideți clientul când domeniul de proprietate al aplicației se încheie.

Puneți URL-ul real al site-ului pe cerere ca de obicei. Pentru cererile permise către site-uri publice fără autentificare proxy, lista de proxy SOCKS oferă adrese candidate; alegeți o versiune SOCKS acceptată de mediul de execuție real. Adresa SOCKS configurează transportul folosit pentru a o atinge; nu este o rută de proxy de redirecționare HTTP furnizată ca HttpHost.

Acestea sunt setările de socket implicite pentru acest manager. O aplicație care folosește un resolver SocketConfig pe rută ar trebui să aplice setarea SOCKS dorită prin acea politică. Exemplul păstrează politica DNS normală de destinație a managerului de conexiuni; rezolvarea la distanță a numelor necesită o configurație verificată separat.

Articole similare