WinHttpGetProxyForUrl 函数 (winhttp.h)
WinHttpGetProxyForUrl 函数检索指定 URL 的代理数据。
语法
WINHTTPAPI BOOL WinHttpGetProxyForUrl(
[in] HINTERNET hSession,
[in] LPCWSTR lpcwszUrl,
[in] WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
[out] WINHTTP_PROXY_INFO *pProxyInfo
);
参数
[in] hSession
WinHttpOpen 函数返回的 WinHTTP 会话句柄。
[in] lpcwszUrl
指向以 null 结尾的 Unicode 字符串的指针,该字符串包含应用程序准备发送的 HTTP 请求的 URL。
[in] pAutoProxyOptions
指向 WINHTTP_AUTOPROXY_OPTIONS 结构的指针,该结构指定要使用的自动代理选项。
[out] pProxyInfo
指向接收代理设置 的 WINHTTP_PROXY_INFO 结构的指针。 然后使用 WINHTTP_OPTION_PROXY 选项将此结构应用于请求句柄。 如果此结构中包含的 lpszProxy 和 lpszProxyBypass 字符串是非 NULL) ,请使用 GlobalFree 函数释放它们 (。
返回值
如果函数成功,则函数返回 TRUE。
如果函数失败,则返回 FALSE。 对于扩展的错误数据,请调用 GetLastError。
可能的错误代码包括错误。
错误代码 | 说明 |
---|---|
|
当无法找到指定 URL 的代理时, 由 WinHttpGetProxyForUrl 返回。 |
|
执行代理自动配置 (PAC) 文件中的脚本代码时出错。 |
|
此操作提供的句柄类型不正确。 |
|
发生了内部错误。 |
|
URL 无效。 |
|
登录尝试失败。 遇到此错误时,请使用 WinHttpCloseHandle 关闭请求句柄。 在重试最初生成此错误的函数之前,必须创建新的请求句柄。 |
|
操作被取消,通常是因为操作之前关闭了操作请求的句柄。 |
|
无法下载 PAC 文件。 例如,PAC URL 引用的服务器可能无法访问,或者服务器返回了 404 NOT FOUND 响应。 |
|
PAC 文件的 URL 指定了“http:”或“https:”以外的方案。 |
|
内存不足,无法完成请求的操作。 (Windows 错误代码) |
注解
此函数实现 Web 代理自动发现 (WPAD) 协议,以便自动配置 HTTP 请求的代理设置。 WPAD 协议下载代理自动配置 (PAC) 文件,该文件是标识要用于给定目标 URL 的代理服务器的脚本。 PAC 文件通常由 IT 部门在企业网络环境中部署。 可以显式指定 PAC 文件的 URL,也可以指示 WinHttpGetProxyForUrl 在本地网络上自动发现 PAC 文件的位置。
WinHttpGetProxyForUrl 仅支持基于 ECMAScript 的 PAC 文件。
WinHttpGetProxyForUrl 必须基于每个 URL 调用,因为 PAC 文件可以为不同的 URL 返回不同的代理服务器。 这很有用,因为 PAC 文件使 IT 部门能够通过将 (哈希) lpcwszUrl) 参数指定的目标 URL (映射到代理服务器阵列中的某个代理来实现代理服务器负载均衡。
在 pAutoProxyOptions 结构的 dwFlags 成员中指定自动发现时,WinHttpGetProxyForUrl 将缓存 autoproxy URL 和 autoproxy 脚本。 有关详细信息,请参阅 Autoproxy 缓存。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP、Windows 2000 Professional SP3 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003、Windows 2000 Server SP3 [仅限桌面应用] |
目标平台 | Windows |
标头 | winhttp.h |
Library | Winhttp.lib |
DLL | Winhttp.dll |