En la API Fluent de Apache HttpClient 5, el Request puede elegir un proxy mientras el Executor proporciona su cuenta. Ejecute la petición a través de ese objeto con credenciales:

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 y Request provienen de org.apache.hc.client5.http.fluent; HttpHost de org.apache.hc.core5.http. Las variables de la cuenta provienen de la configuración de la aplicación.

Los dos usos del proxy describen intencionadamente el mismo host y puerto. viaProxy elige la ruta, mientras que auth registra las credenciales de ese intermediario en el Executor. Si el resultado final sigue siendo 407, compare la ruta seleccionada con el alcance de las credenciales.

Llamar al método execute de conveniencia de un Request separado usaría otra vía de ejecución. Mantenga el Executor con credenciales vinculado a la operación, como en el ejemplo, para que el cliente que recibe el desafío tenga la cuenta configurada.

El ejemplo utiliza la interfaz de contraseña char-array de 5.x. Los fragmentos antiguos de HttpClient 4 Fluent usan paquetes y firmas de métodos diferentes. Cuando la petición termina, returnContent consume la entidad de respuesta y libera su conexión para reutilizarla.

Artículos relacionados