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.

Artigos relacionados