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ó.

Articles relacionats