Apache HttpClient 4.2: conserve el AuthCache del proxy en el contexto de la petición
Mantenga la caché Basic-auth del proxy de HttpClient 4.2 en el mismo contexto de ejecución que usan las peticiones posteriores.
En una aplicación heredada con HttpClient 4.2.2, el proveedor de credenciales y la caché de autenticación hacen trabajos distintos. El proveedor entrega la cuenta; la caché permite que un esquema de autenticación configurado a propósito participe antes de que llegue otro desafío.
Para el antiguo constructor BasicScheme específico del proxy, el traspaso es así:
AuthCache cache = new BasicAuthCache();
cache.put(proxy, new BasicScheme(ChallengeState.PROXY));
HttpContext context = new BasicHttpContext();
context.setAttribute(ClientContext.AUTH_CACHE, cache);
HttpResponse response = client.execute(request, context);Este fragmento supone que client ya tiene la ruta de proxy correspondiente y el proveedor de credenciales. proxy es su HttpHost, y request es la operación real. La clave de la caché debe describir a ese intermediario, no al sitio web de destino.
Pase el contexto ya poblado a execute. Construirlo y luego usar una sobrecarga que crea otro contexto deja la caché fuera del intercambio. Para operaciones posteriores que deban compartir ese estado de autenticación, conserve el contexto adecuado en lugar de reconstruir uno vacío cada vez.
El estado PROXY explícito pertenece a esta API más antigua. TARGET se refiere a la autenticación del destino. Las generaciones más recientes de HttpClient cambiaron paquetes y API de autenticación, así que use esto como guía de mantenimiento para código 4.2 existente y no como receta para un cliente nuevo.
Un intercambio normal impulsado por desafío puede seguir siendo correcto. Siembre la autenticación Basic solo para un proxy conocido y previsto, y consuma o libere cada respuesta antes de que la siguiente operación necesite su conexión. El resultado útil es una cuenta y un esquema en caché ligados a la ejecución que realmente envía la petición.