Apache HttpClient 4.2: अनुरोध संदर्भ पर प्रॉक्सी AuthCache रखें
HttpClient 4.2 के प्रॉक्सी Basic-auth कैश को उसी निष्पादन संदर्भ पर बनाए रखें जिसे आगे के अनुरोध उपयोग करते हैं।
पुराने 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 स्थिति इस पुरानी API की है। TARGET गंतव्य प्रमाणीकरण से संबंधित है। नई HttpClient पीढ़ियों ने पैकेज और प्रमाणीकरण API बदल दिए हैं, इसलिए इसे मौजूदा 4.2 कोड के लिए रखरखाव मार्गदर्शन मानें, नए client के लिए नुस्खा नहीं।
सामान्य चुनौती-चालित आदान-प्रदान अब भी सही हो सकता है। केवल किसी ज्ञात और इच्छित प्रॉक्सी के लिए Basic प्रमाणीकरण बोएँ, और अगली क्रिया को उसके कनेक्शन की आवश्यकता होने से पहले हर प्रतिक्रिया का उपभोग या मुक्ति करें। उपयोगी परिणाम वह खाता और कैश की गई योजना है जो वास्तव में अनुरोध भेजने वाले निष्पादन से जुड़ी होती है।