Funzione WinHttpGetProxyForUrlEx (winhttp.h)

La funzione WinHttpGetProxyForUrlEx recupera i dati proxy per l'URL specificato.

Sintassi

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

Parametri

[in] hResolver

Handle del resolver WinHTTP restituito dalla funzione WinHttpCreateProxyResolver .

[in] pcwszUrl

Puntatore a una stringa Unicode con terminazione Null che contiene un URL per cui verranno determinate le informazioni sul proxy.

[in] pAutoProxyOptions

Puntatore a una struttura WINHTTP_AUTOPROXY_OPTIONS che specifica le opzioni proxy automatico da usare.

[in] pContext

Dati di contesto che verranno passati alla funzione di callback di completamento.

Valore restituito

Codice di stato che indica il risultato dell'operazione.

È possibile che vengano restituiti i codici seguenti. Descrizione
ERROR_IO_PENDING
L'operazione continua in modo asincrono.
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR
Restituito da WinHttpGetProxyForUrlEx quando non è possibile individuare un proxy per l'URL specificato.
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT
Si è verificato un errore durante l'esecuzione del codice script nel file di configurazione automatica del proxy .
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Il tipo di handle fornito non è corretto per questa operazione.
ERROR_WINHTTP_INVALID_URL
L'URL non è valido.
ERROR_WINHTTP_OPERATION_CANCELLED
L'operazione è stata annullata, in genere perché l'handle su cui era operativa la richiesta è stato chiuso prima del completamento dell'operazione.
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT
Impossibile scaricare il file PAC. Ad esempio, il server a cui fa riferimento l'URL PAC potrebbe non essere stato raggiungibile oppure il server ha restituito una risposta 404 NOT FOUND.
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
L'URL del file PAC ha specificato uno schema diverso da "http:" o "https:".
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente per completare l'operazione richiesta. (Codice errore di Windows)

Commenti

Questa funzione implementa il protocollo WPAD (Web Proxy Auto-Discovery) per configurare automaticamente le impostazioni proxy per una richiesta HTTP. Il protocollo WPAD scarica un file PAC (Proxy Auto Configuration), ovvero uno script che identifica il server proxy da usare per un URL di destinazione specificato. I file PAC vengono in genere distribuiti dal reparto IT all'interno di un ambiente di rete aziendale. È possibile specificare l'URL del file PAC in modo esplicito o WinHttpGetProxyForUrlEx per individuare automaticamente il percorso del file PAC nella rete locale.

WinHttpGetProxyForUrlEx supporta solo i file PAC basati su ECMAScript.

WinHttpGetProxyForUrlEx deve essere chiamato in base all'URL, perché il file PAC può restituire un server proxy diverso per URL diversi. Ciò è utile perché il file PAC consente a un reparto IT di implementare il bilanciamento del carico del server proxy eseguendo il mapping (hashing) dell'URL di destinazione (specificato dal parametro lpcwszUrl ) a un determinato proxy in una matrice di server proxy.

WinHttpGetProxyForUrlEx memorizza nella cache l'URL autoproxy e lo script autoproxy quando l'individuazione automatica viene specificata nel membro dwFlags della struttura pAutoProxyOptions . Per altre informazioni, vedere Cache autoproxy.

WinHttpGetProxyForUrlEx fornisce un'API completamente asincrona e annullabile che WinHttpGetProxyForUrl non esegue . WinHttpGetProxyForUrlEx fornisce anche all'applicazione l'elenco proxy completo restituito dallo script PAC che consente all'applicazione di gestire meglio il failover in "DIRECT" e di comprendere SOCKS, se necessario.

WinHttpGetProxyForUrlEx viene sempre eseguito in modo asincrono e restituisce immediatamente con ERROR_IO_PENDING in caso di esito positivo. Il callback viene impostato chiamando WinHttpSetStatusCallback nella sessione hSession fornita da WinHttpOpen. In alternativa, chiamare WinHttpSetStatusCallbacksull'oggetto hResolver fornito da WinHttpCreateProxyResolver per avere un callback specifico per ogni chiamata.

Devi chiamare WinHttpSetStatusCallback prima di WinHttpCreateProxyResolver. Quando si chiama WinHttpSetStatusCallback, usare WINHTTP_CALLBACK_FLAG_REQUEST_ERROR | WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE. Per informazioni sull'uso del callback, vedere WINHTTP_STATUS_CALLBACK .

Quando viene restituito un callback di stato WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE , l'applicazione può chiamare WinHttpGetProxyResult nell'handle del resolver usato per rilasciare WinHttpGetProxyForUrlEx per ricevere i risultati di tale chiamata.

Se la chiamata non riesce dopo la restituzione di ERROR_IO_PENDING , verrà emesso un callback di WINHTTP_CALLBACK_STATUS_REQUEST_ERROR .

Questa funzione esegue sempre out-of-process.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winhttp.h
Libreria Winhttp.lib
DLL Winhttp.dll