Răspuns la o provocare de proxy WinHTTP pe handle-ul cererii
Utilizați WinHttpSetCredentials cu ținta de autentificare a proxy-ului și o schemă oferită acceptată, apoi reîncercați cererea în mod deliberat.
După ce o cerere WinHTTP primește 407, utilizați WinHttpQueryAuthSchemes pentru a examina metodele oferite și a alege una acceptată de client și de cont. Setați credențialele pe acea cerere:
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
Ultimul argument rezervat trebuie să fie null. Verificați rezultatul boolean și, la eșec, GetLastError. Succesul înseamnă că API-ul a acceptat setarea, nu că proxy-ul a acceptat autentificarea.
Retrimiteți printr-un flux de autentificare controlat și examinați răspunsul. Limitați reîncercările; un flux al corpului cererii deja consumat trebuie să poată fi redat din nou dacă operațiunea se repetă. Un 401 al destinației folosește WINHTTP_AUTH_TARGET_SERVER, diferit de această țintă de proxy.
Aceste credențiale se aplică unei singure cereri. WinHTTP nu le transformă într-un depozit general de credențiale pentru cererile ulterioare. Conexiunile autentificate reutilizate pot ascunde temporar o altă provocare, așa că aplicația trebuie să gestioneze în continuare provocările viitoare.
Țineți separată selecția proxy-ului. Un șir de adresă care conține credențiale nu înlocuiește acest API de handle al cererii, la fel cum atingerea cu succes a punctului final nu finalizează autentificarea.