Apache HttpClient 4.2: obdržite Proxy AuthCache v kontekstu zahteve
Ohranite predpomnilnik Basic-auth proxyja HttpClient 4.2 v istem kontekstu izvajanja, ki ga uporabljajo naslednje zahteve.
V starejši aplikaciji s HttpClient 4.2.2 ponudnik poverilnic in predpomnilnik preverjanja pristnosti opravljata različne naloge. Ponudnik priskrbi račun; predpomnilnik omogoči namerno vnaprej nastavljeni shemi preverjanja pristnosti sodelovanje, preden prispe nov izziv.
Pri starem konstruktorju BasicScheme, značilnem za proxy, je predaja videti takole:
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);Ta del predpostavlja, da client že ima ustrezno pot prek proxyja in ponudnika poverilnic. proxy je njegov HttpHost, request pa dejanska operacija. Ključ predpomnilnika mora opisovati tega posrednika, ne ciljnega spletnega mesta.
Napolnjen kontekst predajte execute. Če ga sestavite in nato uporabite preobremenitev, ki ustvari drug kontekst, predpomnilnik ostane zunaj izmenjave. Za kasnejše operacije, ki naj bi si delile to stanje preverjanja pristnosti, obdržite ustrezen kontekst, namesto da vsakič znova zgradite prazen.
Eksplicitno stanje PROXY pripada temu starejšemu API-ju. TARGET zadeva preverjanje pristnosti cilja. Novejše generacije HttpClient so spremenile pakete in API-je za preverjanje pristnosti, zato to uporabite kot navodilo za vzdrževanje obstoječe kode 4.2, ne kot recept za novega odjemalca.
Običajna izmenjava, ki jo vodi izziv, je lahko še vedno pravilna. Osemenite Basic preverjanje pristnosti le za znan in predviden proxy, in vsak odgovor porabite ali sprostite, preden naslednja operacija potrebuje njegovo povezavo. Koristen rezultat sta račun in v predpomnilnik shranjena shema, vezana na izvajanje, ki zahtevo dejansko pošlje.