Այն բանից հետո, երբ WinHTTP հարցումը ստանում է 407, օգտագործեք WinHttpQueryAuthSchemes՝ առաջարկվող մեթոդները ստուգելու և ընտրելու այն մեկը, որին աջակցում են և՛ հաճախորդը, և՛ հաշիվը։ Սահմանեք հավատարմագրերը այդ հարցման վրա.

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

Վերջին վերապահված արգումենտը պետք է լինի null։ Ստուգեք բուլյան արդյունքը և ձախողման դեպքում՝ GetLastError։ Հաջողությունը նշանակում է, որ API-ն ընդունել է կարգավորումը, այլ ոչ թե որ պրոքսին ընդունել է մուտքը։

Նորից ուղարկեք վերահսկվող նույնականացման հոսքի միջոցով և ստուգեք պատասխանը։ Սահմանափակեք կրկնությունները. արդեն սպառված հարցման մարմնի հոսքը պետք է վերարտադրելի լինի, եթե գործողությունը կրկնվի։ Նպատակակետի 401-ը օգտագործում է WINHTTP_AUTH_TARGET_SERVER, որը տարբերվում է այս պրոքսի թիրախից։

Այս հավատարմագրերը վերաբերում են մեկ հարցման։ WinHTTP-ն դրանք չի դարձնում ընդհանուր հավատարմագրերի պահոց հետագա հարցումների համար։ Վերօգտագործված նույնականացված կապերը կարող են ժամանակավորապես թաքցնել մեկ այլ մարտահրավեր, ուստի հավելվածը պետք է շարունակի կառավարել ապագա մարտահրավերները։

Պրոքսիի ընտրությունը պահեք առանձին։ Հավատարմագրեր կրող հասցեի տողը չի փոխարինում այս հարցման բռնակի API-ին, ինչպես որ վերջնակետին հաջող հասնելը չի ավարտում նույնականացումը։

Առնչվող հոդվածներ