Atbilde uz WinHTTP starpniekservera izaicinājumu pieprasījuma rokturī
Izmantojiet WinHttpSetCredentials ar starpniekservera autentifikācijas mērķi un atbalstītu piedāvāto shēmu, pēc tam apzināti atkārtojiet pieprasījumu.
Pēc tam, kad WinHTTP pieprasījums saņem 407, izmantojiet WinHttpQueryAuthSchemes, lai pārbaudītu piedāvātās metodes un izvēlētos vienu, ko atbalsta gan klients, gan konts. Iestatiet akreditācijas datus šajā pieprasījumā:
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
Pēdējam rezervētajam argumentam jābūt null. Pārbaudiet Būla rezultātu un neveiksmes gadījumā GetLastError. Panākumi nozīmē, ka API pieņēma iestatījumu, nevis to, ka starpniekserveris pieņēma pieteikšanos.
Nosūtiet vēlreiz caur kontrolētu autentifikācijas plūsmu un pārbaudiet atbildi. Ierobežojiet atkārtojumus; jau patērētā pieprasījuma pamatteksta plūsma ir jāvar atskaņot atkārtoti, ja darbība tiek atkārtota. Galamērķa 401 izmanto WINHTTP_AUTH_TARGET_SERVER, kas atšķiras no šī starpniekservera mērķa.
Šie akreditācijas dati attiecas uz vienu pieprasījumu. WinHTTP nepadara tos par vispārīgu akreditācijas datu krātuvi vēlākiem pieprasījumiem. Atkārtoti izmantoti autentificēti savienojumi var īslaicīgi paslēpt citu izaicinājumu, tāpēc lietojumprogrammai joprojām ir jāapstrādā nākotnes izaicinājumi.
Turiet starpniekservera izvēli atsevišķi. Adreses virkne ar akreditācijas datiem neaizstāj šo pieprasījuma roktura API, tāpat kā veiksmīga gala punkta sasniegšana nepabeidz autentifikāciju.