Apache HttpClient 4.2: zadržite Proxy AuthCache u kontekstu zahtjeva
Zadržite Basic-auth predmemoriju proxyja HttpClient 4.2 u istom kontekstu izvršavanja koji koriste naredni zahtjevi.
U starijoj aplikaciji s HttpClient 4.2.2 davatelj vjerodajnica i predmemorija provjere autentičnosti obavljaju različite poslove. Davatelj isporučuje račun; predmemorija omogućuje 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č predmemorije mora opisivati taj posrednik, a ne odredišno web-mjesto.
Proslijedite popunjeni kontekst u execute. Ako ga izgradite pa upotrijebite preopterećenje koje stvara drugi kontekst, predmemorija 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 predmemorirana shema vezani uz izvršavanje koje doista šalje zahtjev.