Udostępnij przez


Ustawianie konfiguracji serwera proxy WinINet w usłudze WinHTTP

Ustawianie automatycznego serwera proxy na serwerze WinHTTP 5.1

Aplikacje, które przenoszą się z WinINet do WinHTTP, mogą wymagać korzystania z tych samych ustawień autoproxy, które mogą pobierać z WinINet lub Internet Explorer. Interfejs API WinHTTP w wersji 5.1 może pobrać i użyć tych ustawień proxy. Ogólnie rzecz biorąc, WinHTTP określa serwery proxy i serwery omijane przez proxy na sesję podczas tworzenia sesji. Te ustawienia można zastąpić na podstawie poszczególnych żądań.

Aby użyć tej samej konfiguracji serwera proxy co WinINet lub IE, klient WinHTTP powinien ustawić ustawienia serwera proxy dla sesji. Ponadto jeśli program IE lub WinINet są skonfigurowane do używania funkcji automatycznego odnajdywania serwera proxy sieci Web (WPAD), klient WinHTTP korzystający z tych ustawień musi ustawić ustawienia serwera proxy dla poszczególnych żądań. W poniższych sekcjach opisano sposób określania ustawień serwera proxy dla sesji i żądania:

Ustawianie konfiguracji serwera proxy w sesji

Aplikacja działa na koncie użytkownika

Przed utworzeniem sesji aplikacja wywołuje WinHttpGetIEProxyConfigForCurrentUser, aby uzyskać ustawienia serwera proxy programu IE. Aby uzyskać te ustawienia, aplikacja musi być uruchomiona jako konto użytkownika. Parametr pProxyConfig jest wskaźnikiem do struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG zawierającej nazwę serwera proxy (lpszProxy) i obejście serwera proxy (lpszProxyBypass). Wartości nazwy serwera proxy i wartości obejścia serwera proxy w strukturze WINHTTP_CURRENT_USER_IE_PROXY_CONFIG są następnie używane do inicjowania sesji WinHTTP. Sesja jest inicjowana poprzez wywołanie WinHttpOpen z wykorzystaniem parametrów pwszProxyName i pwszProxyBypass uzyskanych z elementów lpszProxy i lpszProxyBypass struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG.

Aplikacja jest uruchomiona jako usługa

Aplikacja musi upewnić się, że ustawienia rejestru dla pojedynczego użytkownika są ładowane do rejestru przed wywołaniem WinHttpGetIEProxyConfigForCurrentUser. Jeśli te ustawienia nie są ładowane do rejestru, WinHttpGetIEProxyConfigForCurrentUser nie może uzyskać ustawień serwera proxy. Ustawienia rejestru dla pojedynczego użytkownika można załadować do rejestru, wywołując funkcję LoadUserProfile. Jeśli ładowanie ustawień rejestru użytkownika nie jest możliwe, aplikacja może wywołać WinHttpOpen z parametrem dwAccessType, w którym określono WINHTTP_ACCESS_TYPE_DEFAULT_PROXY. Określenie domyślnego serwera proxy w wywołaniu WinHttpOpen powoduje, że interfejs API WinHTTP pobiera konfigurację serwera proxy za pomocą narzędzia WinHTTP proxycfg.exe. Po załadowaniu ustawień rejestru dla pojedynczego użytkownika aplikacja wykonuje kroki opisane w Aplikacja jest uruchomiona na koncie użytkownika, aby ustawić nazwę serwera proxy i serwery obejścia serwera proxy.

Ustawianie konfiguracji serwera proxy w pojedynczym żądaniu

Przed utworzeniem sesji aplikacja wywołuje WinHttpGetIEProxyConfigForCurrentUser w celu określenia, czy winINet i IE są skonfigurowane do używania funkcji WPAD. WinHttpGetIEProxyConfigForCurrentUser zwraca strukturę WINHTTP_CURRENT_USER_IE_PROXY_CONFIG zawierającą element członkowski fAutoDetect. Wartość true dla tego elementu członkowskiego wskazuje, że jest używana funkcja WPAD, a element członkowski lpszAutoConfigUrl zawiera adres URL WPAD.

Używana jest automatyczna konfiguracja serwera proxy

Jeśli jest używany WPAD, aplikacja wywołuje WinHttpGetProxyForUrl w celu pobrania serwera proxy dla żądania. Parametr lpwszUrl zawiera adres URL, do którego jest wysyłane żądanie, a parametr pAutoProxyOptions zawiera wskaźnik do struktury (WINHTTP_AUTOPROXY_OPTIONS) zawierający opcje autoproxy. Aplikacja inicjuje strukturę WINHTTP_AUTOPROXY_OPTIONS z ustawieniami zwróconymi ze struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG w wywołaniu WinHttpGetIEProxyConfigForCurrentUser. Flaga WINHTTP_AUTOPROXY_CONFIG_URL jest określona w członie dwFlags struktury WINHTTP_AUTOPROXY_OPTIONS, a człon lpszAutoconfigUrl zawiera adres URL automatycznej konfiguracji serwera proxy ze struktury WINHTTP_CURRENT_USER_IE_PROXY_CONFIG. Funkcja WinHttpGetProxyForUrl zwraca nazwę serwera proxy i listę obejścia serwera proxy w elementach lpszProxy i lpszProxyBypass struktury WINHTTP_PROXY_INFO.

Po uzyskaniu serwera proxy dla żądania z WinHttpGetProxyForUrl, aplikacja tworzy żądanie za pomocą WinHttpOpenRequest. Następnie WinHttpSetOption jest wywołana w celu ustawienia serwera proxy dla żądania, określając dojście żądania w parametrze hInternet. Parametr dwOption w wywołaniu WinHttpSetOption należy ustawić na WINHTTP_OPTION_PROXY, a parametr lpBuffer jest wskaźnikiem do struktury WINHTTP_PROXY_INFO, która zawiera ustawienia serwera proxy i pomijania serwera proxy, które mają być używane w żądaniu.

Automatyczna konfiguracja serwera proxy nie jest używana

Jeśli wywołanie polecenia WinHttpGetIEProxyConfigForCurrentUser wskazuje, że autoproxy nie jest używany, aplikacja może po prostu utworzyć żądanie za pomocą WinHttpOpenRequest. Konfiguracja serwera proxy jest taka sama dla całej sesji, a zmiany poszczególnych żądań nie są wymagane.