Після того як запит WinHTTP отримає 407, використайте WinHttpQueryAuthSchemes, щоб переглянути запропоновані методи й вибрати той, який підтримують клієнт і обліковий запис. Задайте облікові дані для цього запиту:

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

Останній зарезервований аргумент має бути null. Перевірте логічний результат і в разі невдачі GetLastError. Успіх означає, що API прийняв налаштування, а не що проксі прийняв вхід.

Надішліть повторно через контрольований потік автентифікації і перегляньте відповідь. Обмежте повторення; уже використаний потік тіла запиту має відтворюватися, якщо операцію повторюють. Відповідь 401 від призначення використовує WINHTTP_AUTH_TARGET_SERVER, що відрізняється від цієї цілі проксі.

Ці облікові дані діють для одного запиту. WinHTTP не робить із них загальне сховище облікових даних для подальших запитів. Повторно використані автентифіковані з'єднання можуть тимчасово приховувати черговий запит автентифікації, тому застосунок має й надалі обробляти майбутні запити.

Тримайте вибір проксі окремо. Рядок адреси з обліковими даними не замінює цей API дескриптора запиту, як і успішне досягнення кінцевої точки не завершує автентифікацію.

Схожі статті