Vecā HttpClient 4.2.2 lietojumprogrammā akreditācijas datu nodrošinātājs un autentifikācijas kešatmiņa veic atšķirīgus darbus. Nodrošinātājs piegādā kontu; kešatmiņa ļauj apzināti iepriekš konfigurētai autentifikācijas shēmai piedalīties, pirms ierodas nākamais izaicinājums.

Vecajam starpniekserverim raksturīgajam BasicScheme konstruktoram nodošana izskatās šādi:

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 fragments pieņem, ka client jau ir atbilstošais starpniekservera maršruts un akreditācijas datu nodrošinātājs. proxy ir tā HttpHost, un request ir faktiskā darbība. Kešatmiņas atslēgai jāapraksta šis starpnieks, nevis galamērķa vietne.

Nododiet aizpildīto kontekstu execute. Ja to izveidojat un pēc tam izmantojat pārlādējumu, kas rada citu kontekstu, kešatmiņa paliek ārpus apmaiņas. Turpmākajām darbībām, kurām jādala šis autentifikācijas stāvoklis, saglabājiet atbilstošo kontekstu, nevis katru reizi veidojiet tukšu no jauna.

Skaidrais PROXY stāvoklis pieder šim vecākajam API. TARGET attiecas uz galamērķa autentifikāciju. Jaunākās HttpClient paaudzes ir mainījušas pakotnes un autentifikācijas API, tāpēc izmantojiet to kā esošā 4.2 koda uzturēšanas norādījumu, nevis kā recepti jaunam client.

Parasta izaicinājuma vadīta apmaiņa joprojām var būt pareiza. Iesējiet Basic autentifikāciju tikai zināmam un paredzētam starpniekam, un patērējiet vai atbrīvojiet katru atbildi, pirms nākamajai darbībai vajadzīgs tās savienojums. Noderīgais rezultāts ir konts un kešota shēma, kas piesaistīta izpildei, kura pieprasījumu faktiski nosūta.

Saistītie raksti