描述
WinHttpGetProxyForUrl函数检索指定URL的代理数据。
C / C ++语法
BOOL WinHttpGetProxyForUrl( HINTERNET hSession, LPCWSTR lpcwszUrl, WINHTTP_AUTOPROXY_OPTIONS* pAutoProxyOptions, WINHTTP_PROXY_INFO* pProxyInfo ); |
PowerBASIC 语法
FUNCTION WinHttpGetProxyForUrl ( _ BYVAL hSession AS DWORD, _ BYREF lpcwszUrl AS WSTRINGZ, _ BYREF pAutoProxyOptions AS WINHTTP_AUTOPROXY_OPTIONS, _ BYREF pProxyInfo AS WINHTTP_PROXY_INFO _ ) AS LONG |
参数
hSession
[in]WinHttpOpen函数返回的WinHTTP会话句柄。
lpcwszUrl
[in]指向空值终止的Unicode字符串的指针,该字符串包含应用程序准备发送的HTTP请求的URL。
pAutoProxyOptions
[in]指向WINHTTP_AUTOPROXY_OPTIONS结构的指针,指定要使用的自动代理选项。
pProxyInfo
[out]指向接收代理设置的WINHTTP_PROXY_INFO结构的指针。然后使用WINHTTP_OPTION_PROXY选项将此结构应用于请求句柄。使用GlobalFree函数释放此结构中包含的lpszProxy和lpszProxyBypass字符串(如果它们不为NULL)。
返回值
如果函数成功,函数返回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 |
网址无效 |
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文件。
必须根据每个URL调用WinHttpGetProxyForUrl,因为PAC文件可以为不同的URL返回不同的代理服务器。这是有用的,因为PAC文件使IT部门能够通过将目标URL(由lpcwszUrl参数指定)映射(散列))到代理服务器阵列中的某个代理来实现代理服务器负载平衡。
WinHttpGetProxyForUrl在pAutoProxyOptions结构的dwFlags中成员中指定自动发现时,缓存自动代理URL和自动脚本脚本。有关详细信息,请参阅自动缓存.