Apache HttpClient 5.5 incluye una vía de configuración de SOCKS en los ajustes de socket del gestor de conexiones. Su ejemplo mantenido 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();

El fragmento usa los paquetes org.apache.hc de HttpClient 5 y SocketConfig de HttpCore. Las peticiones hechas con este cliente usan el grupo configurado arriba. Cierre el cliente cuando termine el ámbito de propiedad de la aplicación.

Coloque la URL real del sitio web en la petición como de costumbre. Para peticiones permitidas a sitios públicos sin autenticación de proxy, la lista de proxies SOCKS ofrece direcciones candidatas; elija una versión de SOCKS compatible con el entorno de ejecución real. La dirección SOCKS configura el transporte usado para llegar a ella; no es una ruta de proxy de reenvío HTTP suministrada como HttpHost.

Estos son los ajustes de socket predeterminados de este gestor. Una aplicación que use un resolutor de SocketConfig por ruta debería aplicar el ajuste SOCKS deseado mediante esa política en su lugar. El ejemplo conserva la política DNS de destino normal del gestor de conexiones; la resolución remota de nombres requiere una configuración verificada por separado.

Artículos relacionados