Senoje HttpClient 4.2.2 programoje kredencialų teikėjas ir autentifikavimo talpykla atlieka skirtingus darbus. Teikėjas pateikia paskyrą; talpykla leidžia sąmoningai iš anksto sukonfigūruotai autentifikavimo schemai dalyvauti prieš ateinant kitam iššūkiui.

Senajam proxy būdingam BasicScheme konstruktoriui perdavimas atrodo taip:

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);

Šis fragmentas daro prielaidą, kad client jau turi atitinkamą proxy maršrutą ir kredencialų teikėją. proxy yra jo HttpHost, o request yra tikroji operacija. Talpyklos raktas turi apibūdinti tą tarpininką, o ne paskirties svetainę.

Perduokite užpildytą kontekstą execute. Jį sukūrus ir paskui panaudojus perkrovimą, kuris sukuria kitą kontekstą, talpykla lieka už mainų ribų. Vėlesnėms operacijoms, kurios turi bendrinti tą autentifikavimo būseną, išsaugokite tinkamą kontekstą, o ne kiekvieną kartą kurkite tuščią iš naujo.

Aiški PROXY būsena priklauso šiam senesniam API. TARGET susijęs su paskirties autentifikavimu. Naujesnės HttpClient kartos pakeitė paketus ir autentifikavimo API, todėl naudokite tai kaip esamo 4.2 kodo priežiūros gairę, o ne kaip naujo client receptą.

Įprasti iššūkio valdomi mainai vis tiek gali būti teisingi. Basic autentifikavimą užprogramuokite tik žinomam ir numatytam proxy, ir sunaudokite arba atlaisvinkite kiekvieną atsakymą prieš kitai operacijai prireikiant jo ryšio. Naudingas rezultatas yra paskyra ir talpykloje saugoma schema, susieta su vykdymu, kuris iš tikrųjų siunčia užklausą.

Susiję straipsniai