Compartilhar via


Função WinHttpGetProxyForUrlEx (winhttp.h)

A função WinHttpGetProxyForUrlEx recupera os dados de proxy para a URL especificada.

Sintaxe

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

Parâmetros

[in] hResolver

O identificador do resolvedor WinHTTP retornado pela função WinHttpCreateProxyResolver .

[in] pcwszUrl

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo que contém uma URL para a qual as informações de proxy serão determinadas.

[in] pAutoProxyOptions

Um ponteiro para uma estrutura WINHTTP_AUTOPROXY_OPTIONS que especifica as opções de proxy automático a serem usadas.

[in] pContext

Dados de contexto que serão passados para a função de retorno de chamada de conclusão.

Retornar valor

Um código status que indica o resultado da operação.

Os códigos a seguir podem ser retornados. Descrição
ERROR_IO_PENDING
A operação continua de forma assíncrona.
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR
Retornado por WinHttpGetProxyForUrlEx quando um proxy para a URL especificada não pode ser localizado.
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT
Ocorreu um erro ao executar o código de script no arquivo PAC (Configuração Automática de Proxy).
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
O tipo de identificador fornecido está incorreto para esta operação.
ERROR_WINHTTP_INVALID_URL
A URL é inválida.
ERROR_WINHTTP_OPERATION_CANCELLED
A operação foi cancelada, geralmente porque o identificador no qual a solicitação estava operando foi fechado antes da conclusão da operação.
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT
Não foi possível baixar o arquivo PAC. Por exemplo, o servidor referenciado pela URL pac pode não ter sido acessível ou o servidor retornou uma resposta 404 NOT FOUND.
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
A URL do arquivo PAC especificou um esquema diferente de "http:" ou "https:".
ERROR_NOT_ENOUGH_MEMORY
Não havia memória suficiente disponível para concluir a operação solicitada. (Código de erro do Windows)

Comentários

Essa função implementa o protocolo WPAD (Descoberta Automática de Proxy Web) para definir automaticamente as configurações de proxy para uma solicitação HTTP. O protocolo WPAD baixa um arquivo PAC (Configuração Automática de Proxy), que é um script que identifica o servidor proxy a ser usado para uma determinada URL de destino. Normalmente, os arquivos PAC são implantados pelo departamento de TI em um ambiente de rede corporativa. A URL do arquivo PAC pode ser especificada explicitamente ou WinHttpGetProxyForUrlEx pode ser instruído a descobrir automaticamente o local do arquivo PAC na rede local.

WinHttpGetProxyForUrlEx dá suporte apenas a arquivos PAC baseados em ECMAScript.

WinHttpGetProxyForUrlEx deve ser chamado por URL, pois o arquivo PAC pode retornar um servidor proxy diferente para URLs diferentes. Isso é útil porque o arquivo PAC permite que um departamento de TI implemente o balanceamento de carga do servidor proxy mapeando (hash) a URL de destino (especificada pelo parâmetro lpcwszUrl ) para um determinado proxy em uma matriz de servidor proxy.

WinHttpGetProxyForUrlEx armazena em cache a URL de reprodução automática e o script de reprodução automática quando a descoberta automática é especificada no membro dwFlags da estrutura pAutoProxyOptions . Para obter mais informações, consulte Cache de autoproxia.

WinHttpGetProxyForUrlEx fornece uma API totalmente assíncrona e cancelável que WinHttpGetProxyForUrl não. WinHttpGetProxyForUrlEx também fornece ao aplicativo a lista de proxy completa retornada pelo script PAC, permitindo que o aplicativo lide melhor com o failover para "DIRECT" e entenda SOCKS, se desejado.

WinHttpGetProxyForUrlEx sempre é executado de forma assíncrona e retorna imediatamente com ERROR_IO_PENDING com êxito. O retorno de chamada é definido chamando WinHttpSetStatusCallback na hSession fornecida por WinHttpOpen. Como alternativa, chame WinHttpSetStatusCallback no hResolver fornecido por WinHttpCreateProxyResolver para ter um retorno de chamada específico para cada chamada.

Você deve chamar WinHttpSetStatusCallback antes de WinHttpCreateProxyResolver. Ao chamar WinHttpSetStatusCallback, use WINHTTP_CALLBACK_FLAG_REQUEST_ERROR | WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE. Consulte WINHTTP_STATUS_CALLBACK para obter informações sobre o uso do retorno de chamada.

Depois que um retorno de chamada de status WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE é retornado, o aplicativo pode chamar WinHttpGetProxyResult no identificador de resolvedor usado para emitir WinHttpGetProxyForUrlEx para receber os resultados dessa chamada.

Se a chamada falhar após retornar ERROR_IO_PENDING , um retorno de chamada de WINHTTP_CALLBACK_STATUS_REQUEST_ERROR será emitido.

Essa função sempre é executada fora do processo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winhttp.h
Biblioteca Winhttp.lib
DLL Winhttp.dll