Apache HttpClient 4.2: conserveu l'AuthCache del proxy al context de la petició
Manteniu la memòria cau Basic-auth del proxy d'HttpClient 4.2 al mateix context d'execució que fan servir les peticions posteriors.
En una aplicació antiga amb HttpClient 4.2.2, el proveïdor de credencials i la memòria cau d'autenticació fan feines diferents. El proveïdor subministra el compte; la memòria cau permet que un esquema d'autenticació configurat expressament participi abans que arribi un altre repte.
Pel que fa al constructor BasicScheme antic específic del proxy, el traspàs és així:
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);Aquest fragment assumeix que client ja té la ruta de proxy corresponent i el proveïdor de credencials. proxy és el seu HttpHost, i request és l'operació real. La clau de la memòria cau ha de descriure aquest intermediari, no el lloc web de destinació.
Passeu el context omplert a execute. Construir-lo i després usar una sobrecàrrega que crea un altre context deixa la memòria cau fora de l'intercanvi. Per a les operacions posteriors que han de compartir aquest estat d'autenticació, conserveu el context adequat en lloc de reconstruir-ne un de buit cada vegada.
L'estat PROXY explícit pertany a aquesta API més antiga. TARGET fa referència a l'autenticació de destinació. Les generacions més noves d'HttpClient han canviat els paquets i les API d'autenticació, així que feu servir això com a guia de manteniment per al codi 4.2 existent i no com a recepta per a un client nou.
Un intercanvi normal impulsat per repte encara pot ser correcte. Sembra l'autenticació Basic només per a un proxy conegut i volgut, i consumeix o allibera cada resposta abans que l'operació següent necessiti la seva connexió. El resultat útil és un compte i un esquema en memòria cau lligats a l'execució que realment envia la petició.