Apache HttpClient 4.2: Proxy AuthCache-i sorğu kontekstində saxlayın
HttpClient 4.2 proxy Basic-auth keşini sonrakı sorğuların istifadə etdiyi eyni icra kontekstində saxlayın.
Köhnə HttpClient 4.2.2 tətbiqində etimad məlumatı provayderi və autentifikasiya keşi fərqli işlər görür. Provayder hesabı təqdim edir; keş isə qəsdən əvvəlcədən qurulmuş autentifikasiya sxeminin növbəti çağırış gəlməzdən əvvəl iştirak etməsinə imkan verir.
Proksiyə xas köhnə BasicScheme konstruktoru üçün ötürmə belə görünür:
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);Bu fraqment fərz edir ki, client artıq uyğun proxy marşrutuna və etimad məlumatı provayderinə malikdir. proxy onun HttpHost-u, request isə faktiki əməliyyatdır. Keş açarı həmin vasitəçini təsvir etməlidir, təyinat veb-saytını yox.
Doldurulmuş konteksti execute-ə ötürün. Onu qurub sonra başqa kontekst yaradan həddindən artıq yükləmədən istifadə etmək keşi mübadilədən kənarda qoyur. Həmin autentifikasiya vəziyyətini paylaşmalı olan sonrakı əməliyyatlar üçün hər dəfə boş kontekst yenidən qurmaq əvəzinə uyğun konteksti saxlayın.
Açıq PROXY vəziyyəti bu köhnə API-yə aiddir. TARGET təyinat autentifikasiyasına aiddir. Yeni HttpClient nəsilləri paketləri və autentifikasiya API-lərini dəyişdirdi, buna görə bunu mövcud 4.2 kodu üçün texniki xidmət təlimatı kimi istifadə edin, yeni müştəri üçün resept kimi yox.
Adi çağırışla idarə olunan mübadilə hələ də düzgün ola bilər. Basic autentifikasiyanı yalnız tanınan və nəzərdə tutulan proxy üçün toxumlayın və hər cavabı növbəti əməliyyat onun bağlantısına ehtiyac duymadan əvvəl istehlak edin və ya buraxın. Faydalı nəticə sorğunu həqiqətən göndərən icraya bağlanmış hesab və keşlənmiş sxemdir.