Nastavení konfigurací proxy serveru WinINet ve Službě WinHTTP
Nastavení automatického proxy serveru na winHTTP 5.1
Aplikace, které portují z WinINetu na WinHTTP, můžou potřebovat použít stejné nastavení automatickéhoproxování, které můžou načíst v rámci WinINetu nebo Internet Exploreru (IE). Rozhraní API WinHTTP verze 5.1 může načíst a používat tato nastavení proxy serveru. Obecně platí, že WinHTTP určuje servery proxy a servery pro obejití proxy pro každou relaci při jejím vytvoření. Tato nastavení je možné přepsat na základě požadavku.
Pokud chcete použít stejnou konfiguraci proxy serveru jako WinINet nebo IE, měl by klient WinHTTP nastavit nastavení proxy serveru pro relaci. Pokud je kromě toho služba IE nebo WinINet nakonfigurovaná tak, aby používala automatické zjišťování webového proxy serveru (WPAD), musí klient WinHTTP, který tato nastavení používá, nastavit nastavení proxy serveru pro jednotlivé požadavky. Následující části popisují, jak zadat nastavení proxy serveru pro relaci a požadavek:
- Nastavení konfigurace proxy serveru v seanci
- Nastavení konfigurace proxy serveru na jednom požadavku
Nastavení konfigurace proxy serveru na relaci
Aplikace běží na uživatelském účtu.
Před vytvořením relace aplikace volá WinHttpGetIEProxyConfigForCurrentUser, aby získala nastavení proxy serveru IE. Aby bylo možné tato nastavení získat, musí být aplikace spuštěná jako uživatelský účet. Parametr pProxyConfig je ukazatel na strukturu WINHTTP_CURRENT_USER_IE_PROXY_CONFIG, která obsahuje název proxy serveru (lpszProxy) a servery pro obejití proxy (lpszProxyBypass). Název proxy a hodnoty pro obejití proxy ze struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG se pak použijí k inicializaci relace WinHTTP. Relace se inicializuje voláním WinHttpOpen s parametry pwszProxyName a pwszProxyBypass, které jsou získány z členů lpszProxy a lpszProxyBypass struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG.
Aplikace běží jako služba.
Aplikace musí před voláním WinHttpGetIEProxyConfigForCurrentUserzajistit načtení nastavení registru pro jednotlivé uživatele do registru. Pokud tato nastavení nejsou načtena do registru, WinHttpGetIEProxyConfigForCurrentUser nemůže získat nastavení proxy serveru. Nastavení registru pro jednotlivého uživatele lze do registru načíst voláním LoadUserProfile funkce. Pokud načtení nastavení registru uživatele není možné, aplikace může volat WinHttpOpen s WINHTTP_ACCESS_TYPE_DEFAULT_PROXY zadaným v parametru dwAccessType. Zadání výchozího proxy serveru při volání WinHttpOpen řekne rozhraní API WinHTTP, aby načetlo konfiguraci proxy nastavenou pomocí nástroje WinHTTP proxycfg.exe. Po načtení nastavení registru pro jednotlivého uživatele se aplikace řídí kroky popsanými v části Aplikace běží na uživatelském účtu, aby nastavila název proxy serveru a servery pro obejití proxy.
Nastavení konfigurace proxy serveru na jednom požadavku
Před vytvořením relace aplikace volá WinHttpGetIEProxyConfigForCurrentUser, aby určila, zda jsou WinINet a IE nakonfigurovaní pro použití WPAD. WinHttpGetIEProxyConfigForCurrentUser vrátí strukturu WINHTTP_CURRENT_USER_IE_PROXY_CONFIG, která obsahuje prvek fAutoDetect. Hodnota TRUE pro tohoto člena označuje, že se používá WPAD, a lpszAutoConfigUrl člen obsahuje adresu URL WPAD.
Používá se automatická konfigurace proxy serveru.
Pokud se používá WPAD, aplikace volá WinHttpGetProxyForUrl k načtení proxy pro požadavek. Parametr lpwszUrl obsahuje adresu URL, na kterou se požadavek odesílá, a parametr pAutoProxyOptions obsahuje ukazatel na strukturu (WINHTTP_AUTOPROXY_OPTIONS), která obsahuje možnosti automatického proxy. Aplikace inicializuje strukturu WINHTTP_AUTOPROXY_OPTIONS s nastavením, které bylo vráceno ze struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG při volání funkce WinHttpGetIEProxyConfigForCurrentUser. Příznak WINHTTP_AUTOPROXY_CONFIG_URL je zadán ve členovi dwFlags struktury WINHTTP_AUTOPROXY_OPTIONS a člen lpszAutoconfigUrl obsahuje adresu URL automatické konfigurace proxy ze struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG. Funkce WinHttpGetProxyForUrl vrací název proxy serveru a seznam obejití proxy serveru v členech lpszProxy a lpszProxyBypass struktury WINHTTP_PROXY_INFO.
Po té, co aplikace získá proxy server pro žádost z WinHttpGetProxyForUrl, vytvoří žádost pomocí WinHttpOpenRequest. Poté je zavolána funkce WinHttpSetOption, aby nastavila proxy pro požadavek zadáním popisovače požadavku v parametru hInternet. Parametr dwOption ve volání WinHttpSetOption by měl být nastaven na WINHTTP_OPTION_PROXY a parametr lpBuffer je ukazatel na strukturu WINHTTP_PROXY_INFO obsahující proxy server a obejití proxy serveru, které se mají použít pro požadavek.
Automatická konfigurace proxy serveru se nepoužívá
Pokud volání WinHttpGetIEProxyConfigForCurrentUser indikuje, že se nepoužívá autoproxy, aplikace může jednoduše vytvořit požadavek pomocí WinHttpOpenRequest. Konfigurace proxy serveru je stejná pro celou relaci a změny požadavků nejsou potřeba.