بعد أن يتلقى طلب WinHTTP الاستجابة 407، استخدم WinHttpQueryAuthSchemes لفحص الطرق المعروضة واختيار طريقة يدعمها العميل والحساب. عيّن بيانات الاعتماد على ذلك الطلب:

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

يجب أن تكون الوسيطة المحجوزة الأخيرة فارغة. تحقق من النتيجة المنطقية ومن GetLastError عند الفشل. النجاح يعني أن واجهة البرمجة قبلت الإعداد، وليس أن الوكيل قبل تسجيل الدخول.

أعد الإرسال عبر تدفق مصادقة مُدار وافحص الاستجابة. حدّد عدد المحاولات؛ ويجب أن يكون تدفق جسم الطلب المستهلك قابلاً لإعادة التشغيل إذا تكررت العملية. أما الاستجابة 401 من الوجهة فتستخدم WINHTTP_AUTH_TARGET_SERVER، وهي مختلفة عن هدف الوكيل هذا.

تنطبق بيانات الاعتماد هذه على طلب واحد فقط. ولا يجعلها WinHTTP مخزن بيانات اعتماد عام للطلبات اللاحقة. وقد تخفي الاتصالات المصادق عليها المعاد استخدامها تحدياً آخر مؤقتاً، لذا يجب على التطبيق أن يتعامل مع التحديات المستقبلية.

أبقِ اختيار الوكيل منفصلاً. فسلسلة العنوان التي تحمل بيانات اعتماد لا تحل محل واجهة البرمجة هذه الخاصة بمقبض الطلب، تماماً كما أن الوصول الناجح إلى نقطة النهاية لا يكمل المصادقة.

مقالات ذات صلة