描述
对于应用程序,WinHttpOpen函数初始化WinHTTP函数的使用并返回WinHTTP会话句柄。
C / C ++语法
HINTERNET WinHttpOpen( LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, LPCWSTR pwszProxyBypass, DWORD dwFlags ); |
PowerBASIC 语法
FUNCTION WinHttpOpen ( _ BYREF pwszUserAgent AS WSTRINGZ, _ BYVAL dwAccessType AS DWORD, _ BYREF pwszProxyName AS WSTRINGZ, _ BYREF pwszProxyBypass AS WSTRINGZ, _ BYVAL dwFlags AS DWORD _ ) AS DWORD |
参数
pwszUserAgent
[in]指向一个空值终止的Unicode字符串的指针,该字符串包含调用WinHTTP函数的应用程序或实体的名称。该名称用作HTTP协议中的用户代理.
dwAccessType
[in]所需的访问类型。这可以是以下值之一。
WINHTTP_ACCESS_TYPE_NO_PROXY
在本地解析所有主机名。
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
从注册表检索静态代理或直接配置。WINHTTP_ACCESS_TYPE_DEFAULT_PROXY不会继承浏览器代理设置。WinHTTP不与Internet Explorer共享任何代理设置。此选项将选择WinHTTP Proxycfg.exe实用程序设置的WinHTTP代理配置。
WINHTTP_ACCESS_TYPE_NAMED_PROXY
将请求传递给代理,除非提供代理绕过列表,并且要解析的名称绕过代理。在这种情况下,此函数使用WINHTTP_ACCESS_TYPE_NAMED_PROXY。
pwszProxyName
[in]一个指向空终止的Unicode字符串的指针,其中包含通过将dwAccessType设置为WINHTTP_ACCESS_TYPE_NAMED_PROXY来指定代理访问时要使用的代理服务器的名称。WinHTTP功能仅识别用于HTTP的CERN类型代理。如果dwAccessType未设置为WINHTTP_ACCESS_TYPE_NAMED_PROXY,则此参数必须设置为WINHTTP_NO_PROXY_NAME。
pwszProxyBypass
[in]指向空值终止的Unicode字符串的指针,该字符串包含当dwAccessType设置为WINHTTP_ACCESS_TYPE_NAMED_PROXY时不应通过代理路由的主机名或IP地址或两者的可选列表。该列表可以包含通配符。不要使用空字符串,因为WinHttpOpen功能将其用作代理绕过列表。如果此参数指定“<本地>”宏作为唯一条目,则此函数将绕过不包含句点的任何主机名。如果dwAccessType未设置为WINHTTP_ACCESS_TYPE_NAMED_PROXY,则此参数必须设置为WINHTTP_NO_PROXY_BYPASS。
dwFlags
[in]无符号长整数值,包含指示影响此函数行为的各种选项的标志。该参数可以具有以下值。
WINHTTP_FLAG_ASYNC
以异步方式使用WinHTTP功能。默认情况下,所有使用返回的HINTERNET句柄的WinHTTP函数同步执行。
返回值
如果成功,返回一个有效的会话句柄,否则返回NULL。要检索扩展错误信息,请调用GetLastError.返回的错误代码有:
错误代码 |
描述 |
ERROR_WINHTTP_INTERNAL_ERROR |
发生内部错误。 |
ERROR_NOT_ENOUGH_MEMORY |
没有足够的内存来完成请求的操作。(Windows错误代码) |
备注
即使在异步模式下使用WinHTTP(即,在WinHttpOpen中设置了WINHTTP_FLAG_ASYNC)时,此函数将同步运行。返回值表示成功或失败。要检索扩展错误信息,请调用GetLastError.
WinHttpOpen函数是应用程序调用的第一个WinHTTP函数。它初始化内部WinHTTP数据结构,并为应用程序的将来调用做准备。当应用程序完成使用WinHTTP功能时,它必须调用WinHttpCloseHandle释放会话句柄和任何相关资源。
应用程序可以拨打WinHttpOpen的任何呼叫,尽管单个呼叫通常就足够了。每次调用WinHttpOpen将打开一个新的会话上下文。由于用户数据在多个会话上下文之间不共享,所以代表多个用户进行请求的应用程序应为每个用户创建一个单独的会话,以免共享用户特定的Cookie和身份验证状态。应用程序应为每个WinHttpOpen实例定义单独的行为,例如为每个实例配置的不同代理服务器。
调用应用程序使用WinHttpOpen返回的HINTERNET句柄后,必须使用WinHttpCloseHandle函数关闭。