Apache HttpClient 4.2: zadržite Proxy AuthCache u kontekstu zahteva
Zadržite Basic-auth keš proxyja HttpClient 4.2 u istom kontekstu izvršavanja koji koriste naredni zahtevi.
U starijoj aplikaciji sa HttpClient 4.2.2 davalac akreditiva i keš za proveru identiteta obavljaju različite poslove. Davalac isporučuje nalog; keš omogućava namerno unapred konfigurisanoj šemi provere identiteta da učestvuje pre nego što stigne novi izazov.
Za stari konstruktor BasicScheme specifičan za proxy, 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 proxy rutu i davaoca akreditiva. proxy je njegov HttpHost, a request je stvarna operacija. Ključ keša mora da opisuje tog posrednika, a ne odredišni sajt.
Prosledite popunjeni kontekst u execute. Ako ga izgradite pa upotrebite preopterećenje koje stvara drugi kontekst, keš ostaje izvan razmene. Za kasnije operacije koje treba da dele to stanje provere identiteta zadržite odgovarajući kontekst umesto da svaki put iznova gradite prazan.
Eksplicitno stanje PROXY pripada ovom starijem API-ju. TARGET se tiče provere identiteta odredišta. Novije generacije HttpClient-a promenile su pakete i API-je za proveru identiteta, pa ovo koristite kao smernicu za održavanje postojećeg koda 4.2, a ne kao recept za novi klijent.
Uobičajena razmena vođena izazovom i dalje može biti ispravna. Zasejte Basic proveru identiteta samo za poznat i nameravan proxy i potrošite ili oslobodite svaki odgovor pre nego što sledeća operacija zatreba njegovu vezu. Koristan rezultat je nalog i keširana šema vezani za izvršavanje koje zaista šalje zahtev.