Apache HttpClient 4.2: hoidke puhverserveri AuthCache päringu kontekstis
Hoidke HttpClient 4.2 puhverserveri Basic-auth vahemälu samas täitmiskontekstis, mida kasutavad järgnevad päringud.
Vanemas HttpClient 4.2.2 rakenduses teevad identimisandmete pakkuja ja autentimisvahemälu erinevat tööd. Pakkuja annab konto; vahemälu lubab teadlikult eelseadistatud autentimisskeemil osaleda enne, kui saabub järgmine väljakutse.
Vana puhverserveripõhise BasicScheme-konstruktori puhul näeb üleandmine välja nii:
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);See fragment eeldab, et clientil on juba sobiv puhverserveri marsruut ja identimisandmete pakkuja. proxy on selle HttpHost ja request on tegelik toiming. Vahemälu võti peab kirjeldama seda vahendajat, mitte sihtveebisaiti.
Edastage täidetud kontekst execute-le. Kui ehitate selle ja kasutate seejärel ülekoormust, mis loob teise konteksti, jääb vahemälu vahetusest välja. Hilisemate toimingute jaoks, mis peavad seda autentimisolekut jagama, hoidke sobiv kontekst, selle asemel et iga kord tühja uuesti luua.
Selgesõnaline PROXY olek kuulub selle vanema API juurde. TARGET puudutab sihtkoha autentimist. Uuemad HttpClienti põlvkonnad on pakette ja autentimis-API-sid muutnud, seega kasutage seda olemasoleva 4.2 koodi hooldusjuhisena, mitte uue kliendi retseptina.
Tavaline väljakutsega juhitud vahetus võib siiski olla korrektne. Külvake Basic-autentimist ainult teadaoleva kavatsetud puhverserveri jaoks ning tarbige või vabastage iga vastus enne, kui järgmine toiming vajab selle ühendust. Kasulik tulemus on konto ja vahemällu salvestatud skeem, mis on seotud täitmisega, mis päringu tegelikult saadab.