ตอบสนองความท้าทายพร็อกซีของ WinHTTP บนแฮนเดิลคำขอ
ใช้ WinHttpSetCredentials กับเป้าหมายการรับรองความถูกต้องของพร็อกซีและสคีมาที่เสนอและรองรับ แล้วลองส่งคำขออีกครั้งอย่างตั้งใจ
หลังจากคำขอ WinHTTP ได้รับ 407 ให้ใช้ WinHttpQueryAuthSchemes ตรวจสอบวิธีที่พร็อกซีเสนอ และเลือกวิธีที่ทั้งไคลเอนต์และบัญชีรองรับ ตั้งค่าข้อมูลประจำตัวบนคำขอนั้น:
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
อาร์กิวเมนต์สำรองตัวสุดท้ายต้องเป็น null ตรวจสอบผลลัพธ์แบบบูลีน และเมื่อล้มเหลวให้ดู GetLastError ความสำเร็จหมายถึง API ยอมรับการตั้งค่า ไม่ใช่พร็อกซียอมรับการเข้าสู่ระบบ
ส่งซ้ำผ่านขั้นตอนการรับรองความถูกต้องที่ควบคุมได้ และตรวจสอบการตอบกลับ จำกัดจำนวนครั้งที่ลองใหม่ สตรีมเนื้อหาคำขอที่ถูกใช้ไปแล้วต้องเล่นซ้ำได้หากดำเนินการซ้ำ การตอบกลับ 401 จากปลายทางใช้ WINHTTP_AUTH_TARGET_SERVER ซึ่งต่างจากเป้าหมายพร็อกซีนี้
ข้อมูลประจำตัวนี้ใช้กับคำขอเดียวเท่านั้น WinHTTP ไม่ได้ทำให้เป็นที่เก็บข้อมูลประจำตัวทั่วไปสำหรับคำขอในภายหลัง การเชื่อมต่อที่ผ่านการรับรองซึ่งถูกนำกลับมาใช้อาจซ่อนความท้าทายอื่นไว้ชั่วคราว แอปพลิเคชันจึงยังต้องจัดการความท้าทายในอนาคต
แยกการเลือกพร็อกซีออกมา สตริงที่อยู่ซึ่งมีข้อมูลประจำตัวไม่ใช่สิ่งทดแทน API แฮนเดิลคำขอนี้ เช่นเดียวกับการไปถึงปลายทางได้สำเร็จไม่ได้ทำให้การรับรองความถูกต้องเสร็จสมบูรณ์