Compartir a través de


Establecer configuraciones de proxy de WinINet en WinHTTP

Configuración del proxy automático en WinHTTP 5.1

Es posible que las aplicaciones que se portar de WinINet a WinHTTP necesiten usar la misma configuración de autoproxy que pueden recuperar en WinINet o Internet Explorer (IE). La API winHTTP versión 5.1 puede recuperar y usar esta configuración de proxy. En general, WinHTTP especifica el proxy y los servidores de omisión de proxy por sesión cuando se crea la sesión. Esta configuración se puede invalidar por solicitud.

Para usar la misma configuración de proxy que WinINet o IE, el cliente WinHTTP debe establecer la configuración de proxy para la sesión. Además, si IE o WinINet están configurados para usar la detección automática de proxy web (WPAD), el cliente WinHTTP que usa esa configuración debe establecer la configuración de proxy por solicitud. En las secciones siguientes se describe cómo especificar la configuración de proxy para una sesión y una solicitud:

Establecer la configuración de proxy en una sesión

La aplicación se ejecuta en una cuenta de usuario

Antes de crear una sesión, la aplicación llama a WinHttpGetIEProxyConfigForCurrentUser para obtener la configuración del proxy de IE. La aplicación debe ejecutarse como una cuenta de usuario para obtener esta configuración. El parámetro pProxyConfig es un puntero a una estructura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG que contiene el nombre de proxy (lpszProxy) y los servidores de omisión de proxy (lpszProxyBypass). El nombre de proxy y los valores de omisión de proxy de la estructura de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG se usan para inicializar la sesión winHTTP. La sesión se inicializa llamando a WinHttpOpen con los parámetros pwszProxyName y pwszProxyBypass obtenidos de los miembros lpszProxy y lpszProxyBypass de la estructura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG .

La aplicación se ejecuta como servicio

La aplicación debe asegurarse de que la configuración del Registro de un usuario individual se cargue en el registro antes de llamar a WinHttpGetIEProxyConfigForCurrentUser. Si esta configuración no se carga en el registro, WinHttpGetIEProxyConfigForCurrentUser no puede obtener la configuración del proxy. La configuración del Registro de un usuario individual se puede cargar en el Registro mediante una llamada a la función LoadUserProfile . Si cargar la configuración del Registro del usuario no es una opción, la aplicación puede llamar a WinHttpOpen con el WINHTTP_ACCESS_TYPE_DEFAULT_PROXY especificado en el parámetro dwAcessType . Al especificar el proxy predeterminado en la llamada a WinHttpOpen , se indica a la API de WinHTTP que recupere el conjunto de configuración de proxy mediante la utilidad winHTTPproxycfg.exe . Una vez cargada la configuración del Registro para un usuario individual, la aplicación sigue los pasos descritos en La aplicación se ejecuta en una cuenta de usuario para establecer el nombre de proxy y los servidores de omisión de proxy.

Establecer la configuración de proxy en una sola solicitud

Antes de crear la sesión, la aplicación llama a WinHttpGetIEProxyConfigForCurrentUser para determinar si WinINet e IE están configurados para usar WPAD. WinHttpGetIEProxyConfigForCurrentUser devuelve la estructura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG que contiene el miembro fAutoDetect . Un valor true para este miembro indica que se usa WPAD y el miembro lpszAutoConfigUrl contiene la dirección URL WPAD.

Se usa la configuración automática del proxy

Si se usa WPAD, la aplicación llama a WinHttpGetProxyForUrl para recuperar el proxy de la solicitud. El parámetro lpwszUrl contiene la dirección URL a la que se envía la solicitud y el parámetro pAutoProxyOptions contiene un puntero a la estructura (WINHTTP_AUTOPROXY_OPTIONS) que contiene las opciones de autoproxy. La aplicación inicializa la estructura de WINHTTP_AUTOPROXY_OPTIONS con la configuración devuelta desde la estructura de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG en la llamada a WinHttpGetIEProxyConfigForCurrentUser. La marca WINHTTP_AUTOPROXY_CONFIG_URL se especifica en el miembro dwFlags de la estructura WINHTTP_AUTOPROXY_OPTIONS y el miembro lpszAutoconfigUrl contiene la dirección URL de configuración automática del proxy de la estructura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG . La función WinHttpGetProxyForUrl devuelve el nombre del proxy y la lista de omisión de proxy en los miembros lpszProxy y lpszProxyBypass de la estructura WINHTTP_PROXY_INFO .

Una vez que el proxy de la solicitud se obtiene de WinHttpGetProxyForUrl, la aplicación crea la solicitud con WinHttpOpenRequest. A continuación, se llama a WinHttpSetOption para establecer el proxy de la solicitud especificando el identificador de solicitud en el parámetro hInternet . El parámetro dwOption de la llamada a WinHttpSetOption debe establecerse en WINHTTP_OPTION_PROXY y el parámetro lpBuffer es un puntero a una estructura WINHTTP_PROXY_INFO que contiene el proxy y la omisión de proxy que se usará para la solicitud.

No se usa la configuración automática del proxy

Si la llamada a WinHttpGetIEProxyConfigForCurrentUser indica que no se usa autoproxy, la aplicación simplemente puede crear la solicitud con WinHttpOpenRequest. La configuración de proxy es la misma para toda la sesión y no se necesitan cambios por solicitud.