Apache HttpClient 4.2: zadržite Proxy AuthCache u kontekstu zahtjeva
Zadržite Basic-auth keš proxyja HttpClient 4.2 u istom kontekstu izvršavanja koji koriste naredni zahtjevi.
U starijoj aplikaciji s HttpClient 4.2.2 davatelj vjerodajnica i keš provjere autentičnosti obavljaju različite poslove. Davatelj isporučuje račun; keš omogućava namjerno unaprijed konfiguriranoj shemi provjere autentičnosti da sudjeluje prije nego stigne novi izazov.
Za stari proxiju specifičan konstruktor BasicScheme predaja izgleda ovako:
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);Ovaj fragment pretpostavlja da client već ima odgovarajuću proxiju rutu i davatelja vjerodajnica. proxy je njegov HttpHost, a request je stvarna operacija. Ključ keša mora opisivati taj posrednik, a ne odredišnu web-stranicu.
Proslijedite popunjeni kontekst u execute. Ako ga izgradite pa upotrijebite preopterećenje koje stvara drugi kontekst, keš ostaje izvan razmjene. Za kasnije operacije koje trebaju dijeliti to stanje provjere autentičnosti zadržite odgovarajući kontekst umjesto da svaki put iznova gradite prazan.
Izričito stanje PROXY pripada ovom starijem API-ju. TARGET se tiče provjere autentičnosti odredišta. Novije generacije HttpClienta promijenile su pakete i API-je za provjeru autentičnosti, pa ovo koristite kao smjernicu za održavanje postojećeg koda 4.2, a ne kao recept za novi klijent.
Uobičajena razmjena vođena izazovom i dalje može biti ispravna. Zasijte Basic provjeru autentičnosti samo za poznatu i namjeravanu proxiju i potrošite ili oslobodite svaki odgovor prije nego sljedeća operacija zatreba njegovu vezu. Koristan rezultat je račun i keširana shema vezani uz izvršavanje koje doista šalje zahtjev.