Définition des configurations de proxy WinINet dans WinHTTP
Définition du proxy automatique sur WinHTTP 5.1
Les applications qui effectuent un portage de WinINet vers WinHTTP peuvent avoir besoin d’utiliser les mêmes paramètres autoproxy qu’elles peuvent récupérer sous WinINet ou Internet Explorer (IE). L’API WinHTTP version 5.1 peut récupérer et utiliser ces paramètres de proxy. En général, WinHTTP spécifie les serveurs proxy et proxy bypass par session lors de la création de la session. Ces paramètres peuvent être remplacés par demande.
Pour utiliser la même configuration de proxy que WinINet ou Internet Explorer, le client WinHTTP doit définir les paramètres de proxy pour la session. En outre, si Internet Explorer ou WinINet sont configurés pour utiliser la découverte automatique du proxy web (WPAD), le client WinHTTP qui utilise ces paramètres doit définir les paramètres de proxy sur une base par demande. Les sections suivantes décrivent comment spécifier les paramètres de proxy pour une session et une requête :
- Définition de la configuration du proxy sur une session
- Définition de la configuration du proxy sur une requête unique
Définition de la configuration du proxy sur une session
L’application s’exécute sur un compte d’utilisateur
Avant la création d’une session, l’application appelle WinHttpGetIEProxyConfigForCurrentUser pour obtenir les paramètres du proxy IE. L’application doit s’exécuter en tant que compte d’utilisateur pour obtenir ces paramètres. Le paramètre pProxyConfig est un pointeur vers une structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG qui contient le nom du proxy (lpszProxy) et les serveurs de contournement proxy (lpszProxyBypass). Le nom du proxy et les valeurs de contournement du proxy de la structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG sont ensuite utilisées pour initialiser la session WinHTTP. La session est initialisée en appelant WinHttpOpen avec les paramètres pwszProxyName et pwszProxyBypass obtenus à partir des membres lpszProxy et lpszProxyBypass de la structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG .
L’application s’exécute en tant que service
L’application doit s’assurer que les paramètres de Registre d’un utilisateur individuel sont chargés dans le Registre avant d’appeler WinHttpGetIEProxyConfigForCurrentUser. Si ces paramètres ne sont pas chargés dans le Registre, WinHttpGetIEProxyConfigForCurrentUser ne peut pas obtenir les paramètres de proxy. Les paramètres du Registre d’un utilisateur individuel peuvent être chargés dans le Registre en appelant la fonction LoadUserProfile . Si le chargement des paramètres de Registre de l’utilisateur n’est pas une option, l’application peut appeler WinHttpOpen avec le WINHTTP_ACCESS_TYPE_DEFAULT_PROXY spécifié dans le paramètre dwAcessType . La spécification du proxy par défaut dans l’appel à WinHttpOpen indique à l’API WinHTTP de récupérer la configuration du proxy définie à l’aide de l’utilitaire winHTTP proxycfg.exe . Une fois que les paramètres de Registre d’un utilisateur individuel ont été chargés, l’application suit les étapes décrites sous L’application s’exécute sur un compte d’utilisateur pour définir le nom du proxy et les serveurs de contournement proxy.
Définition de la configuration du proxy sur une requête unique
Avant la création de la session, l’application appelle WinHttpGetIEProxyConfigForCurrentUser pour déterminer si WinINet et IE sont configurés pour utiliser WPAD. WinHttpGetIEProxyConfigForCurrentUser retourne la structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG qui contient le membre fAutoDetect . La valeur TRUE pour ce membre indique que WPAD est utilisé et que le membre lpszAutoConfigUrl contient l’URL WPAD.
La configuration du proxy automatique est utilisée
Si WPAD est utilisé, l’application appelle WinHttpGetProxyForUrl pour récupérer le proxy de la requête. Le paramètre lpwszUrl contient l’URL à laquelle la demande est envoyée, et le paramètre pAutoProxyOptions contient un pointeur vers la structure (WINHTTP_AUTOPROXY_OPTIONS) qui contient les options autoproxy. L’application initialise la structure WINHTTP_AUTOPROXY_OPTIONS avec les paramètres retournés par la structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG dans l’appel à WinHttpGetIEProxyConfigForCurrentUser. L’indicateur WINHTTP_AUTOPROXY_CONFIG_URL est spécifié dans le membre dwFlags de la structure WINHTTP_AUTOPROXY_OPTIONS, et le membre lpszAutoconfigUrl contient l’URL de configuration automatique du proxy à partir de la structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG. La fonction WinHttpGetProxyForUrl retourne le nom du proxy et la liste de contournement du proxy dans les membres lpszProxy et lpszProxyBypass de la structure WINHTTP_PROXY_INFO .
Une fois le proxy de la demande obtenu à partir de WinHttpGetProxyForUrl, l’application crée la requête avec WinHttpOpenRequest. Ensuite, WinHttpSetOption est appelé pour définir le proxy de la requête en spécifiant le handle de requête dans le paramètre hInternet . Le paramètre dwOption dans l’appel à WinHttpSetOption doit être défini sur WINHTTP_OPTION_PROXY et le paramètre lpBuffer est un pointeur vers une structure WINHTTP_PROXY_INFO qui contient le proxy et le contournement proxy à utiliser pour la requête.
La configuration de proxy automatique n’est pas utilisée
Si l’appel à WinHttpGetIEProxyConfigForCurrentUser indique qu’autoproxy n’est pas utilisé, l’application peut simplement créer la demande avec WinHttpOpenRequest. La configuration du proxy est la même pour l’ensemble de la session, et les modifications par demande ne sont pas nécessaires.