Configurações SOCKS do Apache HttpClient 5.5 no gerenciador de conexões
Configure a política de sockets do pool com SocketConfig em vez de uma rota de proxy HTTP ou uma fábrica de sockets personalizada.
O Apache HttpClient 5.5 inclui um caminho de configuração de SOCKS nas configurações de socket do gerenciador de conexões. 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 trecho usa os pacotes org.apache.hc do HttpClient 5 e o SocketConfig do HttpCore. As requisições feitas com este cliente usam o pool configurado acima. Feche o cliente quando o escopo de propriedade da aplicação terminar.
Coloque a URL real do site na requisição como de costume. Para requisições permitidas a sites públicos sem autenticação de proxy, a lista de proxies SOCKS oferece endereços candidatos; escolha uma versão de SOCKS suportada pelo ambiente de execução real. O endereço SOCKS configura o transporte usado para alcançá-lo; não é uma rota de proxy de encaminhamento HTTP fornecida como HttpHost.
Estas são as configurações de socket padrão deste gerenciador. Uma aplicação que usa um resolvedor SocketConfig por rota deve aplicar a configuração SOCKS desejada por meio dessa política. O exemplo mantém a política DNS de destino normal do gerenciador de conexões; a resolução remota de nomes exige uma configuração verificada separadamente.