不使用自动配置文件的发现

如果尚未在本地网络上部署代理自动配置文件, 则 WinHttpGetProxyForUrl 找不到代理服务器。 如果 WinHttpGetProxyForUrl 失败,则有多种可能的回退策略可用于获取可行的代理配置,具体取决于其运行时环境。 其中包括通过用户界面提示代理设置、要求某人使用 WinHTTP“ProxyCfg.exe”实用工具将代理配置存储在注册表中,或使用 WinHttpGetIEProxyConfigForCurrentUser 检查 Internet Explorer 设置中是否列出了代理服务器。

可能没有代理自动配置文件,因为客户端具有直接 Internet 连接(例如通过 ISP),并且不需要代理服务器。

另一方面,可能需要代理服务器,但本地网络可能不支持 WPAD。 在这种情况下,必须从用户处获取代理配置,或者在客户端计算机上的某个位置找到代理配置。

在中间层服务器环境(如 COM+ 或 ASP 应用程序)中运行的基于 WinHTTP 的应用程序应依赖于服务器管理员使用“ProxyCfg.exe”实用工具在注册表中设置默认代理配置。 然后,可以使用 WinHttpGetDefaultProxyConfiguration 函数检索此默认配置信息,或者只需在 WinHttpOpen 调用中指定 WINHTTP_ACCESS_TYPE_PRECONFIG 标志即可。

另一方面,在客户端桌面计算机上运行的 WinHTTP 应用程序可以尝试检查 Internet Explorer 的代理设置。 WinHttpGetIEProxyConfigForCurrentUser 使用当前用户的 Internet Explorer 代理设置填充调用方提供的 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 结构, (拨号、VPN 或 LAN) 。 此配置可能指示使用了自动检测,也可以指定代理自动配置文件的 URL,也可以指定要使用的实际代理服务器,也可以指定这三者的组合。 如果此信息包括 PAC URL 或代理服务器,WinHTTP 应用程序可以尝试使用这些 URL 或代理服务器。

可以在平台软件开发工具包 (SDK) WinHTTP 示例中找到使用 WinHttpGetProxyForUrlWinHttpGetIEProxyConfigForCurrentUser 函数的示例。