Apache HttpClient 4.2: احتفظ بذاكرة AuthCache للوكيل في سياق الطلب
احتفظ بذاكرة تخزين مصادقة Basic لوكيل HttpClient 4.2 في سياق التنفيذ نفسه الذي تستخدمه الطلبات اللاحقة.
في تطبيق قديم يعمل بـ HttpClient 4.2.2، يؤدي موفر بيانات الاعتماد وذاكرة المصادقة مهمتين مختلفتين. الموفر يقدم الحساب؛ والذاكرة تسمح لمخطط مصادقة أُعدّ مسبقًا عن قصد بأن يشارك قبل وصول تحدٍّ آخر.
بالنسبة إلى مُنشئ BasicScheme القديم الخاص بالوكيل، يبدو التسليم هكذا:
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);تفترض هذه القطعة أن client يملك مسبقًا مسار الوكيل المطابق وموفر بيانات الاعتماد. وproxy هو HttpHost الخاص به، وrequest هو العملية الفعلية. يجب أن يصف مفتاح الذاكرة ذلك الوسيط، لا موقع الوجهة.
مرّر السياق المعبأ إلى execute. بناءه ثم استخدام تحميل زائد ينشئ سياقًا آخر يترك الذاكرة خارج التبادل. للعمليات اللاحقة التي يُقصد أن تشارك حالة المصادقة تلك، احتفظ بالسياق المناسب بدل إعادة بناء سياق فارغ في كل مرة.
حالة PROXY الصريحة تنتمي إلى هذه الواجهة الأقدم. أما TARGET فتخص مصادقة الوجهة. أجيال HttpClient الأحدث غيّرت الحزم وواجهات المصادقة، لذا استخدم هذا كإرشاد صيانة لكود 4.2 القائم لا كوصفة لعميل جديد.
يمكن أن يظل التبادل العادي المدفوع بالتحدي صحيحًا. ازرع مصادقة Basic فقط لوكيل معروف ومقصود، واستهلك كل استجابة أو حرّرها قبل أن تحتاج العملية التالية اتصالها. النتيجة المفيدة هي حساب ومخطط مخزّن مرتبطان بالتنفيذ الذي يرسل الطلب فعليًا.