Condividi tramite


Impostazione delle configurazioni proxy WinINet in WinHTTP

Impostazione del proxy automatico in WinHTTP 5.1

Le applicazioni che si connettono da WinINet a WinHTTP potrebbero dover usare le stesse impostazioni di reimpostazione automatica che possono recuperare in WinINet o Internet Explorer (Internet Explorer). L'API WinHTTP versione 5.1 può recuperare e usare queste impostazioni proxy. In generale, WinHTTP specifica i server proxy e proxy bypass in base alla sessione quando viene creata la sessione. Queste impostazioni possono essere sostituite per ogni richiesta.

Per usare la stessa configurazione proxy di WinINet o Internet Explorer, il client WinHTTP deve impostare le impostazioni proxy per la sessione. Inoltre, se Internet Explorer o WinINet sono configurati per l'uso dell'individuazione automatica del proxy Web (WPAD), il client WinHTTP che usa tali impostazioni deve impostare le impostazioni proxy in base alla richiesta. Le sezioni seguenti descrivono come specificare le impostazioni proxy per una sessione e una richiesta:

Impostazione della configurazione del proxy in una sessione

L'applicazione è in esecuzione in un account utente

Prima di creare una sessione, l'applicazione chiama WinHttpGetIEProxyConfigForCurrentUser per ottenere le impostazioni proxy di Internet Explorer. Per ottenere queste impostazioni, l'applicazione deve essere in esecuzione come account utente. Il parametro pProxyConfig è un puntatore a una struttura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG che contiene il nome proxy (lpszProxy) e i server di bypass proxy (lpszProxyBypass). I valori di bypass proxy e nome proxy della struttura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG vengono quindi usati per inizializzare la sessione WinHTTP. La sessione viene inizializzata chiamando WinHttpOpen con i parametri pwszProxyName e pwszProxyBypass ottenuti dai membri lpszProxy e lpszProxyBypass della struttura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG .

L'applicazione è in esecuzione come servizio

L'applicazione deve assicurarsi che le impostazioni del Registro di sistema per un singolo utente vengano caricate nel Registro di sistema prima di chiamare WinHttpGetIEProxyConfigForCurrentUser. Se queste impostazioni non vengono caricate nel Registro di sistema, WinHttpGetIEProxyConfigForCurrentUser non può ottenere le impostazioni proxy. Le impostazioni del Registro di sistema per un singolo utente possono essere caricate nel Registro di sistema chiamando la funzione LoadUserProfile . Se il caricamento delle impostazioni del Registro di sistema dell'utente non è un'opzione, l'applicazione può chiamare WinHttpOpen con il WINHTTP_ACCESS_TYPE_DEFAULT_PROXY specificato nel parametro dwAcessType . Se si specifica il proxy predefinito nella chiamata a WinHttpOpen , l'API WinHTTP indica all'API WinHTTP di recuperare il set di configurazione proxy usando l'utilità winHTTPproxycfg.exe . Dopo il caricamento delle impostazioni del Registro di sistema per un singolo utente, l'applicazione segue i passaggi descritti in L'applicazione viene eseguita in un account utente per impostare il nome proxy e i server di bypass proxy.

Impostazione della configurazione del proxy in una singola richiesta

Prima della creazione della sessione, l'applicazione chiama WinHttpGetIEProxyConfigForCurrentUser per determinare se WinINet e Internet Explorer sono configurati per l'uso di WPAD. WinHttpGetIEProxyConfigForCurrentUser restituisce la struttura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG che contiene il membro fAutoDetect . Il valore TRUE per questo membro indica che viene usato WPAD e il membro lpszAutoConfigUrl contiene l'URL WPAD.

Viene usata la configurazione automatica del proxy

Se si usa WPAD, l'applicazione chiama WinHttpGetProxyForUrl per recuperare il proxy per la richiesta. Il parametro lpwszUrl contiene l'URL a cui viene inviata la richiesta e il parametro pAutoProxyOptions contiene un puntatore alla struttura (WINHTTP_AUTOPROXY_OPTIONS) che contiene le opzioni autoproxy. L'applicazione inizializza la struttura WINHTTP_AUTOPROXY_OPTIONS con le impostazioni restituite dalla struttura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG nella chiamata a WinHttpGetIEProxyConfigForCurrentUser. Il flag WINHTTP_AUTOPROXY_CONFIG_URL viene specificato nel membro dwFlags della struttura WINHTTP_AUTOPROXY_OPTIONS e il membro lpszAutoconfigUrl contiene l'URL di configurazione automatica del proxy dalla struttura WINHTTP_CURRENT_USER_IE_PROXY_CONFIG . La funzione WinHttpGetProxyForUrl restituisce il nome del proxy e l'elenco di bypass del proxy nei membri lpszProxy e lpszProxyBypass della struttura WINHTTP_PROXY_INFO .

Dopo aver ottenuto il proxy per la richiesta da WinHttpGetProxyForUrl, l'applicazione crea la richiesta con WinHttpOpenRequest. Viene quindi chiamato WinHttpSetOption per impostare il proxy per la richiesta specificando l'handle della richiesta nel parametro hInternet . Il parametro dwOption nella chiamata a WinHttpSetOption deve essere impostato su WINHTTP_OPTION_PROXY e il parametro lpBuffer è un puntatore a una struttura WINHTTP_PROXY_INFO che contiene il proxy e il bypass del proxy da usare per la richiesta.

La configurazione automatica del proxy non viene usata

Se la chiamata a WinHttpGetIEProxyConfigForCurrentUser indica che autoproxy non viene usato, l'applicazione può semplicemente creare la richiesta con WinHttpOpenRequest. La configurazione del proxy è la stessa per l'intera sessione e le modifiche per richiesta non sono necessarie.