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 选项将此结构应用于请求句柄。 如果此结构中包含的 lpszProxylpszProxyBypass 字符串是非 NULL) ,请使用 GlobalFree 函数释放它们 (。

返回值

如果函数成功,则函数返回 TRUE

如果函数失败,则返回 FALSE。 对于扩展的错误数据,请调用 GetLastError

可能的错误代码包括错误。

错误代码 说明
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR
当无法找到指定 URL 的代理时, 由 WinHttpGetProxyForUrl 返回。
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT
执行代理自动配置 (PAC) 文件中的脚本代码时出错。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
此操作提供的句柄类型不正确。
ERROR_WINHTTP_INTERNAL_ERROR
发生了内部错误。
ERROR_WINHTTP_INVALID_URL
URL 无效。
ERROR_WINHTTP_LOGIN_FAILURE
登录尝试失败。 遇到此错误时,请使用 WinHttpCloseHandle 关闭请求句柄。 在重试最初生成此错误的函数之前,必须创建新的请求句柄。
ERROR_WINHTTP_OPERATION_CANCELLED
操作被取消,通常是因为操作之前关闭了操作请求的句柄。
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT
无法下载 PAC 文件。 例如,PAC URL 引用的服务器可能无法访问,或者服务器返回了 404 NOT FOUND 响应。
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
PAC 文件的 URL 指定了“http:”或“https:”以外的方案。
ERROR_NOT_ENOUGH_MEMORY
内存不足,无法完成请求的操作。 (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

另请参阅

WinHTTP 版本