Share via


Función WinHttpGetProxyForUrlEx (winhttp.h)

La función WinHttpGetProxyForUrlEx recupera los datos de proxy de la dirección URL especificada.

Sintaxis

WINHTTPAPI DWORD WinHttpGetProxyForUrlEx(
  [in] HINTERNET                 hResolver,
  [in] PCWSTR                    pcwszUrl,
  [in] WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
  [in] DWORD_PTR                 pContext
);

Parámetros

[in] hResolver

Identificador de resolución WinHTTP devuelto por la función WinHttpCreateProxyResolver .

[in] pcwszUrl

Puntero a una cadena Unicode terminada en null que contiene una dirección URL para la que se determinará la información del proxy.

[in] pAutoProxyOptions

Puntero a una estructura de WINHTTP_AUTOPROXY_OPTIONS que especifica las opciones de proxy automático que se van a usar.

[in] pContext

Datos de contexto que se pasarán a la función de devolución de llamada de finalización.

Valor devuelto

Código de estado que indica el resultado de la operación.

Se pueden devolver los códigos siguientes. Descripción
ERROR_IO_PENDING
La operación continúa de forma asincrónica.
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR
Devuelto por WinHttpGetProxyForUrlEx cuando no se puede encontrar un proxy para la dirección URL especificada.
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT
Error al ejecutar el código de script en el archivo de configuración automática de proxy (PAC).
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
El tipo de identificador proporcionado es incorrecto para esta operación.
ERROR_WINHTTP_INVALID_URL
La dirección URL no es válida.
ERROR_WINHTTP_OPERATION_CANCELLED
La operación se canceló, normalmente porque el identificador en el que estaba funcionando la solicitud se cerró antes de que se completara la operación.
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT
No se pudo descargar el archivo PAC. Por ejemplo, es posible que el servidor al que hace referencia la dirección URL de PAC no haya sido accesible o el servidor devolvió una respuesta 404 NOT FOUND.
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
La dirección URL del archivo PAC especificó un esquema distinto de "http:" o "https:".
ERROR_NOT_ENOUGH_MEMORY
No había suficiente memoria disponible para completar la operación solicitada. (Código de error de Windows)

Comentarios

Esta función implementa el protocolo de detección automática de proxy web (WPAD) para configurar automáticamente la configuración del proxy para una solicitud HTTP. El protocolo WPAD descarga un archivo de configuración automática de proxy (PAC), que es un script que identifica el servidor proxy que se va a usar para una dirección URL de destino determinada. Normalmente, el departamento de TI implementa archivos PAC dentro de un entorno de red corporativa. Se puede especificar explícitamente la dirección URL del archivo PAC o WinHttpGetProxyForUrlEx para detectar automáticamente la ubicación del archivo PAC en la red local.

WinHttpGetProxyForUrlEx solo admite archivos PAC basados en ECMAScript.

Se debe llamar a WinHttpGetProxyForUrlEx por dirección URL, ya que el archivo PAC puede devolver un servidor proxy diferente para diferentes direcciones URL. Esto resulta útil porque el archivo PAC permite a un departamento de TI implementar el equilibrio de carga del servidor proxy mediante la asignación (hash) de la dirección URL de destino (especificada por el parámetro lpcwszUrl ) a un determinado proxy en una matriz de servidores proxy.

WinHttpGetProxyForUrlEx almacena en caché la dirección URL de autoproxy y el script de autoproxy cuando se especifica la detección automática en el miembro dwFlags de la estructura pAutoProxyOptions . Para más información, consulte Autoproxy Cache.

WinHttpGetProxyForUrlEx proporciona una API totalmente asincrónica y cancelable que WinHttpGetProxyForUrl no. WinHttpGetProxyForUrlEx también proporciona a la aplicación la lista de proxy completa que devolvió el script PAC, lo que permite a la aplicación controlar mejor la conmutación por error a "DIRECT" y comprender CALCET si lo desea.

WinHttpGetProxyForUrlEx siempre se ejecuta de forma asincrónica y devuelve inmediatamente con ERROR_IO_PENDING si se ejecuta correctamente. La devolución de llamada se establece llamando a WinHttpSetStatusCallback en la hSession proporcionada por WinHttpOpen. Como alternativa, llame a WinHttpSetStatusCallback en el hResolver proporcionado por WinHttpCreateProxyResolver para tener una devolución de llamada específica para cada llamada.

Debe llamar a WinHttpSetStatusCallback antes de WinHttpCreateProxyResolver. Al llamar a WinHttpSetStatusCallback, use WINHTTP_CALLBACK_FLAG_REQUEST_ERROR | WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE. Consulte WINHTTP_STATUS_CALLBACK para obtener información sobre el uso de la devolución de llamada.

Una vez que se devuelve una devolución de llamada de estado WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE , la aplicación puede llamar a WinHttpGetProxyResult en el identificador de resolución usado para emitir WinHttpGetProxyForUrlEx para recibir los resultados de esa llamada.

Si se produce un error en la llamada después de devolver ERROR_IO_PENDING , se emitirá una devolución de llamada de WINHTTP_CALLBACK_STATUS_REQUEST_ERROR .

Esta función siempre se ejecuta fuera de proceso.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winhttp.h
Library Winhttp.lib
Archivo DLL Winhttp.dll