Apache HttpClient 4.2: houd de proxy-AuthCache op de request-context
Houd een HttpClient 4.2 proxy-Basic-auth-cache op dezelfde uitvoeringscontext die volgende requests gebruiken.
In een oudere HttpClient 4.2.2-toepassing doen een credential-provider en een authenticatiecache verschillend werk. De provider levert het account; de cache laat een bewust vooraf geconfigureerd authenticatieschema deelnemen voordat een volgende uitdaging arriveert.
Voor de oude proxy-specifieke BasicScheme-constructor ziet de overdracht er zo uit:
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);Dit fragment veronderstelt dat client al de bijpassende proxyroute en de credential-provider heeft. proxy is zijn HttpHost, en request is de feitelijke bewerking. De cachesleutel moet die tussenpartij beschrijven, niet de bestemmingswebsite.
Geef de gevulde context door aan execute. Hem opbouwen en daarna een overbelasting gebruiken die een andere context maakt, laat de cache buiten de uitwisseling. Behoud voor latere bewerkingen die die authenticatiestatus willen delen de juiste context, in plaats van elke keer een lege opnieuw op te bouwen.
De expliciete PROXY-status hoort bij deze oudere API. TARGET gaat over authenticatie bij de bestemming. Nieuwere HttpClient-generaties hebben pakketten en authenticatie-API's gewijzigd, dus gebruik dit als onderhoudsrichtlijn voor bestaande 4.2-code en niet als recept voor een nieuwe client.
Een normale, door een uitdaging gestuurde uitwisseling kan nog steeds correct zijn. Zaai Basic-authenticatie alleen voor een bekende bedoelde proxy, en verbruik of geef elke respons vrij voordat de volgende bewerking de verbinding nodig heeft. Het nuttige resultaat is een account en een gecacht schema dat hangt aan de uitvoering die het verzoek werkelijk verstuurt.