После того как запрос WinHTTP получит 407, используйте WinHttpQueryAuthSchemes, чтобы просмотреть предложенные методы и выбрать тот, который поддерживают клиент и учетная запись. Задайте учетные данные для этого запроса:

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

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

Отправьте повторно через контролируемый поток проверки подлинности и просмотрите ответ. Ограничьте повторы; уже израсходованный поток тела запроса должен допускать повторное воспроизведение, если операция повторяется. Ответ 401 от назначения использует WINHTTP_AUTH_TARGET_SERVER, что отличается от этой цели прокси.

Эти учетные данные действуют для одного запроса. WinHTTP не превращает их в общее хранилище учетных данных для последующих запросов. Повторно используемые прошедшие проверку подключения могут временно скрывать очередной запрос проверки, поэтому приложение должно по-прежнему обрабатывать будущие запросы.

Держите выбор прокси отдельно. Строка адреса с учетными данными не заменяет этот API дескриптора запроса, как и успешное достижение конечной точки не завершает проверку подлинности.

Похожие статьи