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-ს, ისევე როგორც საბოლოო წერტილამდე წარმატებული მიღწევა არ ამთავრებს ავთენტიფიკაციას.