หลังจากคำขอ WinHTTP ได้รับ 407 ให้ใช้ WinHttpQueryAuthSchemes ตรวจสอบวิธีที่พร็อกซีเสนอ และเลือกวิธีที่ทั้งไคลเอนต์และบัญชีรองรับ ตั้งค่าข้อมูลประจำตัวบนคำขอนั้น:

WinHttpSetCredentials(
    requestHandle,
    WINHTTP_AUTH_TARGET_PROXY,
    selectedScheme,
    proxyUser,
    proxyPassword,
    nullptr);

อาร์กิวเมนต์สำรองตัวสุดท้ายต้องเป็น null ตรวจสอบผลลัพธ์แบบบูลีน และเมื่อล้มเหลวให้ดู GetLastError ความสำเร็จหมายถึง API ยอมรับการตั้งค่า ไม่ใช่พร็อกซียอมรับการเข้าสู่ระบบ

ส่งซ้ำผ่านขั้นตอนการรับรองความถูกต้องที่ควบคุมได้ และตรวจสอบการตอบกลับ จำกัดจำนวนครั้งที่ลองใหม่ สตรีมเนื้อหาคำขอที่ถูกใช้ไปแล้วต้องเล่นซ้ำได้หากดำเนินการซ้ำ การตอบกลับ 401 จากปลายทางใช้ WINHTTP_AUTH_TARGET_SERVER ซึ่งต่างจากเป้าหมายพร็อกซีนี้

ข้อมูลประจำตัวนี้ใช้กับคำขอเดียวเท่านั้น WinHTTP ไม่ได้ทำให้เป็นที่เก็บข้อมูลประจำตัวทั่วไปสำหรับคำขอในภายหลัง การเชื่อมต่อที่ผ่านการรับรองซึ่งถูกนำกลับมาใช้อาจซ่อนความท้าทายอื่นไว้ชั่วคราว แอปพลิเคชันจึงยังต้องจัดการความท้าทายในอนาคต

แยกการเลือกพร็อกซีออกมา สตริงที่อยู่ซึ่งมีข้อมูลประจำตัวไม่ใช่สิ่งทดแทน API แฮนเดิลคำขอนี้ เช่นเดียวกับการไปถึงปลายทางได้สำเร็จไม่ได้ทำให้การรับรองความถูกต้องเสร็จสมบูรณ์

บทความที่เกี่ยวข้อง