Répondre à un défi de proxy WinHTTP sur le handle de requête
Utilisez WinHttpSetCredentials avec la cible d'authentification du proxy et un schéma proposé pris en charge, puis réessayez la requête délibérément.
Après qu'une requête WinHTTP a reçu 407, utilisez WinHttpQueryAuthSchemes pour examiner les méthodes proposées et en choisir une prise en charge par le client et le compte. Définissez les informations d'identification sur cette requête :
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
Le dernier argument réservé doit être null. Vérifiez le résultat booléen et, en cas d'échec, GetLastError. Un succès signifie que l'API a accepté le réglage, et non que le proxy a accepté la connexion.
Renvoyez la requête via un flux d'authentification contrôlé et examinez la réponse. Limitez les nouvelles tentatives ; un flux de corps de requête déjà consommé doit pouvoir être rejoué si l'opération est répétée. Un 401 de la destination utilise WINHTTP_AUTH_TARGET_SERVER, différent de cette cible de proxy.
Ces informations d'identification s'appliquent à une seule requête. WinHTTP n'en fait pas un magasin d'informations d'identification général pour les requêtes ultérieures. Les connexions authentifiées réutilisées peuvent masquer temporairement un autre défi, l'application doit donc continuer à gérer les défis futurs.
Gardez la sélection du proxy séparée. Une chaîne d'adresse porteuse d'informations d'identification ne remplace pas cette API de handle de requête, tout comme atteindre correctement le point de terminaison n'achève pas l'authentification.