Odpowiedź na wyzwanie proxy WinHTTP na uchwycie żądania
Użyj WinHttpSetCredentials z celem uwierzytelniania proxy i obsługiwanym oferowanym schematem, a następnie celowo ponów żądanie.
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.