Apache HttpClient 4.2: เก็บ AuthCache ของพร็อกซีไว้บนบริบทของคำขอ
เก็บแคช Basic-auth ของพร็อกซี 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 ที่ชัดเจนเป็นของ API รุ่นเก่านี้ TARGET เกี่ยวกับการยืนยันตัวตนที่ปลายทาง HttpClient รุ่นใหม่เปลี่ยนแพ็กเกจและ API การยืนยันตัวตนแล้ว จึงใช้สิ่งนี้เป็นแนวทางบำรุงรักษาสำหรับโค้ด 4.2 ที่มีอยู่ ไม่ใช่สูตรสำหรับ client ใหม่
การแลกเปลี่ยนปกติที่ขับเคลื่อนด้วยความท้าทายยังคงถูกต้องได้ หว่านการยืนยันตัวตน Basic สำหรับพร็อกซีที่รู้จักและตั้งใจเท่านั้น และใช้หรือปล่อยการตอบกลับแต่ละครั้งก่อนที่การดำเนินการถัดไปจะต้องใช้การเชื่อมต่อของมัน ผลลัพธ์ที่เป็นประโยชน์คือบัญชีและสคีมาที่แคชไว้ซึ่งผูกกับการทำงานที่ส่งคำขอจริง