HttpOpenRequestA 函数 (wininet.h)
创建 HTTP 请求句柄。
语法
HINTERNET HttpOpenRequestA(
[in] HINTERNET hConnect,
[in] LPCSTR lpszVerb,
[in] LPCSTR lpszObjectName,
[in] LPCSTR lpszVersion,
[in] LPCSTR lpszReferrer,
[in] LPCSTR *lplpszAcceptTypes,
[in] DWORD dwFlags,
[in] DWORD_PTR dwContext
);
参数
[in] hConnect
InternetConnect返回的 HTTP 会话的句柄。
[in] lpszVerb
指向 null终止字符串的指针,其中包含在请求中使用的 HTTP 谓词。 如果此参数 NULL,则该函数使用 GET 作为 HTTP 谓词。
[in] lpszObjectName
指向 null终止字符串的指针,该字符串包含指定 HTTP 谓词的目标对象的名称。 这通常是文件名、可执行模块或搜索说明符。
[in] lpszVersion
指向 null终止字符串的指针,其中包含要用于请求的 HTTP 版本。 Internet Explorer 中的设置将替代此参数中指定的值。
如果此参数 NULL,则该函数使用 HTTP 版本 1.1 或 1.0,具体取决于 Internet Explorer 设置的值。
价值 | 意义 |
---|---|
|
HTTP 版本 1.0 |
|
HTTP 版本 1.1 |
[in] lpszReferrer
指向 null终止字符串的指针,该字符串指定从中获取请求中 URL 的文档的 URL(lpszObjectName)。 如果此参数 NULL,则未指定引用方。
[in] lplpszAcceptTypes
指向 null-terminated 字符串数组的指针,指示客户端接受的媒体类型。 下面是一个示例。
PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};
未能使用 NULL 指针正确终止数组将导致崩溃。
如果此参数 NULL,则客户端不接受任何类型。 服务器通常解释缺少接受类型,以指示客户端仅接受类型为“text/*”的文档(即仅文本文档-无图片或其他二进制文件)。
[in] dwFlags
Internet 选项。 此参数可以是以下任一值。
价值 | 意义 |
---|---|
|
如果资源的网络请求由于ERROR_INTERNET_CONNECTION_RESET(已重置与服务器的连接)或ERROR_INTERNET_CANNOT_CONNECT(尝试连接到服务器失败),则返回缓存中的资源。 |
|
如果不存在 Expires 时间和从服务器返回的 LastModified 时间,则强制重新加载,确定是否从网络重新加载项。 |
|
禁用针对请求中给定的主机名从服务器返回的基于 SSL/PCT 的证书的检查。 WinINet 函数通过比较匹配主机名和简单的通配符规则,对证书使用简单的检查。 |
|
禁用检查基于 SSL/PCT 的证书是否具有适当的有效期。 |
|
禁用此特殊类型的重定向检测。 使用此标志时,WinINet 函数以透明方式允许从 HTTPS 重定向到 HTTP URL。 |
|
禁用此特殊类型的重定向检测。 使用此标志时,WinINet 函数以透明方式允许从 HTTP 重定向到 HTTPS URL。 |
|
对连接使用保持活动语义(如果可用)。 Microsoft网络(MSN)、NT LAN 管理器(NTLM)和其他类型的身份验证都需要此标志。 |
|
如果无法缓存文件,将导致创建临时文件。 |
|
不会自动尝试身份验证。 |
|
不会自动处理 HttpSendRequest中的重定向。 |
|
不向缓存添加返回的实体。 |
|
不会自动向请求添加 Cookie 标头,也不会自动将返回的 Cookie 添加到 Cookie 数据库。 |
|
禁用 Cookie 对话框。 |
|
强制源服务器解析请求,即使代理上存在缓存副本也是如此。 |
|
强制从源服务器下载请求的文件、对象或目录列表,而不是从缓存下载。 |
|
如果自上次下载资源以来已修改资源,则重新加载 HTTP 资源。 重新加载所有 FTP 资源。
Windows XP 和 Windows Server 2003 R2 及更早版本:也会重新加载 Gopher 资源。 |
|
使用安全事务语义。 这转换为使用安全套接字层/专用通信技术(SSL/PCT),并且仅在 HTTP 请求中有意义。 |
[in] dwContext
指向一个变量的指针,该变量包含将此操作与任何应用程序数据关联的应用程序定义值。
返回值
如果成功,则返回 HTTP 请求句柄,否则 NULL。 若要检索扩展的错误信息,请调用 GetLastError。
言论
HttpOpenRequest 函数创建新的 HTTP 请求句柄,并将指定的参数存储在该句柄中。 HTTP 请求句柄保存要发送到 HTTP 服务器的请求,并包含作为请求的一部分发送的所有 RFC822/MIME/HTTP 标头。
如果指定了“GET”或“POST”以外的谓词,HttpOpenRequest 会自动为请求设置INTERNET_FLAG_NO_CACHE_WRITE和INTERNET_FLAG_RELOAD。
使用 Microsoft Internet Explorer 5 及更高版本时,如果 lpszVerb 设置为“HEAD”,则会在 HTTP/1.1 服务器的响应上忽略 Content-Length 标头。
在 Windows 7、Windows Server 2008 R2 及更高版本上,internet Explorer 设置将替代 lpszVersion 参数。 EnableHttp1_1 是一个注册表值,位于 HKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE 由系统 Internet Explorer 中设置的 Internet 选项控制。 EnableHttp1_1 值默认值为 1。 HttpOpenRequest 函数将任何低于 1.1 的 HTTP 版本升级到 HTTP 版本 1.1(如果 EnableHttp1_1 设置为 1)。
调用应用程序使用 HttpOpenRequest返回的 HINTERNET 句柄后,必须使用 InternetCloseHandle 函数将其关闭。
与 WinINet API 的其他所有方面一样,不能从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。
注意
wininet.h 标头将 HttpOpenRequest 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | wininet.h |
库 | Wininet.lib |
DLL | Wininet.dll |