Autenticação de proxy no Apache HttpClient 5 Fluent com Executor
Combine a rota viaProxy de um Fluent Request com as credenciais no Apache HttpClient 5 Executor.
Na API Fluent do Apache HttpClient 5, o Request pode escolher um proxy enquanto o Executor fornece sua conta. Execute a solicitação por esse objeto com credenciais:
HttpHost proxy = new HttpHost("http", "proxy.example", 8080);
Executor executor = Executor.newInstance()
.auth(proxy, proxyUser, proxyPassword.toCharArray());
String body = executor.execute(
Request.get("https://www.example.com/").viaProxy(proxy))
.returnContent()
.asString();
Executor e Request vêm de org.apache.hc.client5.http.fluent; HttpHost vem de org.apache.hc.core5.http. As variáveis da conta vêm da configuração da aplicação.
Os dois usos do proxy descrevem intencionalmente o mesmo host e porta. viaProxy escolhe a rota, enquanto auth registra as credenciais desse intermediário no Executor. Se o resultado final continuar 407, compare a rota selecionada com o escopo das credenciais.
Chamar o método execute de conveniência de um Request separado usaria outro caminho de execução. Mantenha o Executor com credenciais ligado à operação, como no exemplo, para que o cliente que recebe o desafio tenha a conta configurada.
O exemplo usa a interface de senha char-array do 5.x. Trechos antigos do HttpClient 4 Fluent usam pacotes e assinaturas de métodos diferentes. Quando a solicitação termina, returnContent consome a entidade de resposta e libera a conexão para reutilização.