WinINet-proxyconfiguraties instellen in WinHTTP
Automatische proxy instellen op WinHTTP 5.1
Toepassingen die van WinINet naar WinHTTP worden overgezet, moeten mogelijk dezelfde autoproxy-instellingen gebruiken die ze kunnen ophalen onder WinINet of Internet Explorer (IE). De WinHTTP-versie 5.1-API kan deze proxyinstellingen ophalen en gebruiken. Over het algemeen geeft WinHTTP de proxy- en proxy-bypassservers per sessie op wanneer de sessie wordt gemaakt. Deze instellingen kunnen per aanvraag worden overschreven.
Als u dezelfde proxyconfiguratie wilt gebruiken als WinINet of IE, moet de WinHTTP-client proxy-instellingen instellen voor de sessie. Bovendien, als IE of WinINet is geconfigureerd voor het gebruik van Web Proxy Auto-Discovery (WPAD), moet de WinHTTP-client die deze instellingen gebruikt proxy-instellingen per aanvraag instellen. In de volgende secties wordt beschreven hoe u de proxyinstellingen voor een sessie en een aanvraag opgeeft:
De proxyconfiguratie instellen voor een sessie
De toepassing wordt uitgevoerd op een gebruikersaccount
Voordat een sessie wordt gemaakt, roept de toepassing WinHttpGetIEProxyConfigForCurrentUser aan om de IE-proxyinstellingen op te halen. De toepassing moet worden uitgevoerd als een gebruikersaccount om deze instellingen te verkrijgen. De parameter pProxyConfig is een verwijzing naar een WINHTTP_CURRENT_USER_IE_PROXY_CONFIG structuur die de proxynaam (lpszProxy) bevat en proxy-bypassservers (lpszProxyBypass) bevat. De proxynaam en proxy bypass-waarden van de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG structuur worden vervolgens gebruikt om de WinHTTP-sessie te initialiseren. De sessie wordt geïnitialiseerd door WinHttpOpen- aan te roepen met de parameters pwszProxyName en pwszProxyBypass parameters die zijn verkregen uit de lpszProxy- en lpszProxyBypass leden van de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG structuur.
De toepassing wordt uitgevoerd als een service
De toepassing moet ervoor zorgen dat de registerinstellingen voor een afzonderlijke gebruiker in het register worden geladen voordat u WinHttpGetIEProxyConfigForCurrentUseraanroept. Als deze instellingen niet in het register worden geladen, kan WinHttpGetIEProxyConfigForCurrentUser de proxy-instellingen niet verkrijgen. Registerinstellingen voor een afzonderlijke gebruiker kunnen in het register worden geladen door de LoadUserProfile aan te roepen functie. Als het laden van de registerinstellingen van de gebruiker geen optie is, kan de toepassing WinHttpOpen- aanroepen met de WINHTTP_ACCESS_TYPE_DEFAULT_PROXY die is opgegeven in de parameter dwAcessType. Als u de standaardproxy opgeeft in de aanroep van WinHttpOpen geeft u aan dat de WinHTTP-API de proxyconfiguratie moet ophalen die is ingesteld met behulp van het hulpprogramma WinHTTP proxycfg.exe. Nadat de registerinstellingen voor een afzonderlijke gebruiker zijn geladen, volgt de toepassing de stappen die worden beschreven in De toepassing wordt uitgevoerd op een gebruikersaccount om de proxynaam en proxy-bypassservers in te stellen.
De proxyconfiguratie instellen voor één aanvraag
Voordat de sessie wordt gemaakt, roept de toepassing WinHttpGetIEProxyConfigForCurrentUser aan om te bepalen of WinINet en IE zijn geconfigureerd voor het gebruik van WPAD. WinHttpGetIEProxyConfigForCurrentUser retourneert de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG structuur die het element fAutoDetect bevat. Een waarde van TRUE voor dit lid geeft aan dat WPAD wordt gebruikt en dat het lpszAutoConfigUrl lid de WPAD-URL bevat.
Automatische proxyconfiguratie wordt gebruikt
Als WPAD wordt gebruikt, roept de toepassing WinHttpGetProxyForUrl- aan om de proxy voor de aanvraag op te halen. De parameter lpwszUrl bevat de URL waarnaar de aanvraag wordt verzonden en de parameter pAutoProxyOptions bevat een aanwijzer naar de structuur (WINHTTP_AUTOPROXY_OPTIONS) die de autoproxyopties bevat. De toepassing initialiseert de WINHTTP_AUTOPROXY_OPTIONS-structuur met de instellingen die zijn geretourneerd uit de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG-structuur bij de aanroep van WinHttpGetIEProxyConfigForCurrentUser. De WINHTTP_AUTOPROXY_CONFIG_URL vlag wordt opgegeven in de dwFlags lid van de WINHTTP_AUTOPROXY_OPTIONS structuur en het lpszAutoconfigUrl lid bevat de url voor automatische configuratie van de proxy uit de WINHTTP_CURRENT_USER_IE_PROXY_CONFIG structuur. De functie WinHttpGetProxyForUrl retourneert de proxynaam en de lijst met proxy-bypas in de lpszProxy en lpszProxyBypass velden van de WINHTTP_PROXY_INFO structuur.
Nadat de proxy voor de aanvraag is verkregen uit WinHttpGetProxyForUrl, maakt de toepassing de aanvraag met WinHttpOpenRequest. Vervolgens wordt WinHttpSetOption- aangeroepen om de proxy voor de aanvraag in te stellen door de aanvraaggreep op te geven in de parameter hInternet. De dwOption parameter in de aanroep naar WinHttpSetOption- moet worden ingesteld op WINHTTP_OPTION_PROXY en de parameter lpBuffer is een aanwijzer naar een WINHTTP_PROXY_INFO structuur die de proxy en proxy bypass bevat die moet worden gebruikt voor de aanvraag.
Automatische proxyconfiguratie wordt niet gebruikt
Als de aanroep van WinHttpGetIEProxyConfigForCurrentUser aangeeft dat autoproxy niet wordt gebruikt, kan de toepassing de aanvraag gewoon maken met WinHttpOpenRequest. De proxyconfiguratie is hetzelfde voor de hele sessie en wijzigingen per aanvraag zijn niet nodig.