Kai WinHTTP užklausa gauna 407, naudokite WinHttpQueryAuthSchemes pasiūlytiems metodams ištirti ir pasirinkite vieną, kurį palaiko klientas ir paskyra. Nustatykite kredencialus toje užklausoje:

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

Paskutinis rezervuotas argumentas turi būti null. Patikrinkite loginį rezultatą ir, jei nepavyko, GetLastError. Sėkmė reiškia, kad API priėmė nustatymą, o ne tai, kad proxy priėmė prisijungimą.

Siųskite dar kartą per kontroliuojamą autentifikavimo srautą ir patikrinkite atsakymą. Apribokite pakartojimus; jau sunaudotas užklausos turinio srautas turi būti pakartojamas, jei operacija kartojama. Paskirties 401 naudoja WINHTTP_AUTH_TARGET_SERVER, skirtingai nei šis proxy tikslas.

Šie kredencialai galioja vienai užklausai. WinHTTP nepaverčia jų bendra kredencialų saugykla vėlesnėms užklausoms. Pakartotinai naudojamos autentifikuotos jungtys gali laikinai paslėpti kitą iššūkį, todėl programa vis tiek turi apdoroti būsimus iššūkius.

Laikykite proxy pasirinkimą atskirai. Adreso eilutė su kredencialais nepakeičia šios užklausos apdorojimo objekto API, kaip ir sėkmingas pasiekimas galutinio taško neužbaigia autentifikavimo.

Susiję straipsniai