Després que una sol·licitud WinHTTP rebi un 407, feu servir WinHttpQueryAuthSchemes per examinar els mètodes oferts i triar-ne un que el client i el compte admetin. Definiu les credencials en aquesta sol·licitud:

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

L'últim argument reservat ha de ser null. Comproveu el resultat booleà i, si falla, GetLastError. L'èxit vol dir que l'API ha acceptat la configuració, no que el proxy hagi acceptat l'inici de sessió.

Torneu a enviar la sol·licitud amb un flux d'autenticació controlat i examineu la resposta. Limiteu els reintents; un flux del cos de la sol·licitud ja consumit ha de poder reproduir-se si l'operació es repeteix. Un 401 de la destinació fa servir WINHTTP_AUTH_TARGET_SERVER, diferent d'aquest objectiu de proxy.

Aquestes credencials s'apliquen a una sola sol·licitud. WinHTTP no les converteix en un magatzem general de credencials per a sol·licituds posteriors. Les connexions autenticades reutilitzades poden amagar temporalment un altre repte, així que l'aplicació encara ha de gestionar els reptes futurs.

Manteniu la selecció de proxy a part. Una cadena d'adreça amb credencials no substitueix aquesta API de handle de sol·licitud, igual que arribar amb èxit al punt final no completa l'autenticació.

Articles relacionats