Apache HttpClient 4.2: Proxy AuthCache'ni so'rov kontekstida saqlang
HttpClient 4.2 proxy'sining Basic-auth keshi keyingi so'rovlar ishlatadigan aynan o'sha bajarish kontekstida saqlang.
Eski HttpClient 4.2.2 ilovasida hisob ma'lumotlari provayderi va autentifikatsiya keshi turli ishlarni bajaradi. Provayder hisobni taqdim etadi; kesh ataylab oldindan sozlangan autentifikatsiya sxemasining keyingi chaqiriq kelishidan oldin ishtirok etishiga imkon beradi.
Proxy'ga xos eski BasicScheme konstruktori uchun topshirish shunday ko'rinadi:
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 parcha client allaqachon mos proxy marshruti va hisob ma'lumotlari provayderiga ega deb hisoblaydi. proxy — uning HttpHost'i, request esa haqiqiy amaldir. Kesh kaliti o'sha vositachini tavsiflashi kerak, maqsad veb-saytini emas.
To'ldirilgan kontekstni execute'ga bering. Uni qurib, keyin boshqa kontekst yaratadigan ortiqcha yuklamadan foydalanish keshni almashinuvdan tashqarida qoldiradi. O'sha autentifikatsiya holatini bo'lishishi kerak bo'lgan keyingi amallar uchun har safar bo'sh kontekstni qayta qurish o'rniga tegishli kontekstni saqlang.
Aniq PROXY holati shu eski API'ga tegishli. TARGET maqsad autentifikatsiyasiga taalluqli. Yangi HttpClient avlodlari paketlar va autentifikatsiya API'larini o'zgartirdi, shuning uchun buni yangi client uchun retsept emas, mavjud 4.2 kodi uchun xizmat ko'rsatish yo'riqnomasi sifatida ishlating.
Oddiy chaqiriqqa asoslangan almashinuv hamon to'g'ri bo'lishi mumkin. Basic autentifikatsiyani faqat ma'lum va ko'zlangan proxy uchun seping, va keyingi amal uning ulanishiga muhtoj bo'lishidan oldin har bir javobni iste'mol qiling yoki bo'shating. Foydali natija — so'rovni haqiqatan yuboradigan bajarishga bog'langan hisob va keshlangan sxema.