Axustes SOCKS de Apache HttpClient 5.5 no xestor de conexións
Configure a política de sockets do pool con SocketConfig en lugar dunha ruta de proxy HTTP ou unha fábrica de sockets propia.
Apache HttpClient 5.5 inclúe unha vía de configuración de SOCKS nos axustes de socket do xestor de conexións. O seu exemplo mantido 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();
O fragmento usa os paquetes org.apache.hc de HttpClient 5 e SocketConfig de HttpCore. As peticións feitas con este cliente usan o pool configurado arriba. Pecha o cliente cando remate o ámbito de propiedade da aplicación.
Pon o URL real do sitio web na petición coma de costume. Para peticións permitidas a sitios públicos sen autenticación de proxy, a lista de proxies SOCKS ofrece enderezos candidatos; escolle unha versión de SOCKS compatible coa contorna de execución real. O enderezo SOCKS configura o transporte usado para chegar a el; non é unha ruta de proxy de reenvío HTTP fornecida como HttpHost.
Estes son os axustes de socket predeterminados deste xestor. Unha aplicación que use un resolvedor de SocketConfig por ruta debería aplicar o axuste SOCKS desexado mediante esa política no seu lugar. O exemplo conserva a política DNS de destino normal do xestor de conexións; a resolución remota de nomes require unha configuración verificada á parte.