Gdy żądanie WinHTTP otrzyma 407, użyj WinHttpQueryAuthSchemes, aby sprawdzić oferowane metody i wybrać tę, którą obsługuje klient i konto. Ustaw poświadczenia na tym żądaniu:

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

Ostatni zarezerwowany argument musi mieć wartość null. Sprawdź wynik logiczny, a w razie niepowodzenia GetLastError. Sukces oznacza, że API zaakceptowało ustawienie, a nie że proxy zaakceptowało logowanie.

Wyślij ponownie przez kontrolowany przepływ uwierzytelniania i sprawdź odpowiedź. Ogranicz ponowienia; już zużyty strumień treści żądania musi być możliwy do odtworzenia, jeśli operacja zostanie powtórzona. Odpowiedź 401 od miejsca docelowego używa WINHTTP_AUTH_TARGET_SERVER, inaczej niż ten cel proxy.

Te poświadczenia dotyczą jednego żądania. WinHTTP nie czyni z nich ogólnego magazynu poświadczeń dla późniejszych żądań. Ponownie użyte uwierzytelnione połączenia mogą tymczasowo ukryć kolejne wyzwanie, więc aplikacja nadal musi obsługiwać przyszłe wyzwania.

Trzymaj wybór proxy osobno. Ciąg adresu z poświadczeniami nie zastępuje tego API uchwytu żądania, tak jak skuteczne dotarcie do punktu końcowego nie kończy uwierzytelniania.

Powiązane artykuły