Պատասխանել WinHTTP պրոքսիի մարտահրավերին հարցման բռնակի վրա
Օգտագործեք WinHttpSetCredentials-ը պրոքսիի նույնականացման թիրախով և աջակցվող առաջարկվող սխեմայով, ապա դիտավորյալ կրկնեք հարցումը։
Այն բանից հետո, երբ WinHTTP հարցումը ստանում է 407, օգտագործեք WinHttpQueryAuthSchemes՝ առաջարկվող մեթոդները ստուգելու և ընտրելու այն մեկը, որին աջակցում են և՛ հաճախորդը, և՛ հաշիվը։ Սահմանեք հավատարմագրերը այդ հարցման վրա.
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
Վերջին վերապահված արգումենտը պետք է լինի null։ Ստուգեք բուլյան արդյունքը և ձախողման դեպքում՝ GetLastError։ Հաջողությունը նշանակում է, որ API-ն ընդունել է կարգավորումը, այլ ոչ թե որ պրոքսին ընդունել է մուտքը։
Նորից ուղարկեք վերահսկվող նույնականացման հոսքի միջոցով և ստուգեք պատասխանը։ Սահմանափակեք կրկնությունները. արդեն սպառված հարցման մարմնի հոսքը պետք է վերարտադրելի լինի, եթե գործողությունը կրկնվի։ Նպատակակետի 401-ը օգտագործում է WINHTTP_AUTH_TARGET_SERVER, որը տարբերվում է այս պրոքսի թիրախից։
Այս հավատարմագրերը վերաբերում են մեկ հարցման։ WinHTTP-ն դրանք չի դարձնում ընդհանուր հավատարմագրերի պահոց հետագա հարցումների համար։ Վերօգտագործված նույնականացված կապերը կարող են ժամանակավորապես թաքցնել մեկ այլ մարտահրավեր, ուստի հավելվածը պետք է շարունակի կառավարել ապագա մարտահրավերները։
Պրոքսիի ընտրությունը պահեք առանձին։ Հավատարմագրեր կրող հասցեի տողը չի փոխարինում այս հարցման բռնակի API-ին, ինչպես որ վերջնակետին հաջող հասնելը չի ավարտում նույնականացումը։