InternetOpenUrlA 函数 (wininet.h)

打开由完整的 FTP 或 HTTP URL 指定的资源。

语法

HINTERNET InternetOpenUrlA(
  [in] HINTERNET hInternet,
  [in] LPCSTR    lpszUrl,
  [in] LPCSTR    lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

参数

[in] hInternet

当前 Internet 会话的句柄。 上一次调用 InternetOpen 时,必须已返回句柄。

[in] lpszUrl

指向以 null 结尾的字符串变量的指针,该变量指定要开始读取的 URL。 仅支持以 ftp:、http:或 https: 开头的 URL。

[in] lpszHeaders

指向 以 null 结尾的字符串的指针,该字符串指定要发送到 HTTP 服务器的标头。 有关详细信息,请参阅 HttpSendRequest 函数中 lpszHeaders 参数的说明。

[in] dwHeadersLength

附加标头的大小(以 TCHAR 为单位)。 如果此参数为 -1L 且 lpszHeaders 不为 NULL,则假定 lpszHeaders (ASCIIZ) 为零终止,并计算长度。

[in] dwFlags

此参数的取值可为下列值之一:

含义
INTERNET_FLAG_EXISTING_CONNECT
如果存在具有发出请求所需的相同属性的现有 InternetConnect 对象,则尝试使用该对象。 这仅适用于 FTP 操作,因为 FTP 是通常在同一会话期间执行多个操作的唯一协议。 WinINet API 为 InternetOpen 生成的每个 HINTERNET 句柄缓存单个连接句柄。 InternetOpenUrl 将此标志用于 HTTP 和 FTP 连接。
INTERNET_FLAG_HYPERLINK
在确定是否从网络重新加载项目时,如果没有“过期时间”且服务器未返回 LastModified 时间,则强制重新加载。
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
禁用根据请求中提供的主机名检查从服务器返回的基于 SSL/PCT 的证书。 WinINet 函数通过比较匹配的主机名和简单的通配符规则,对证书使用简单的检查。
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
禁用检查基于 SSL/PCT 的证书是否正确有效日期。
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
禁用此特殊类型的重定向检测。 使用此标志时,WinINet 以透明方式允许从 HTTPS 重定向到 HTTP URL。
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
禁用此特殊类型的重定向检测。 使用此标志时,WinINet 以透明方式允许从 HTTP 重定向到 HTTPS URL。
INTERNET_FLAG_KEEP_CONNECTION
使用保持连接语义(如果可用)。 Microsoft 网络 (MSN) 、NTLM 和其他类型的身份验证都需要此标志。
INTERNET_FLAG_NEED_FILE
如果无法缓存文件,则会导致创建临时文件。
INTERNET_FLAG_NO_AUTH
不会自动尝试身份验证。
INTERNET_FLAG_NO_AUTO_REDIRECT
不自动处理 HttpSendRequest 中的重定向。
INTERNET_FLAG_NO_CACHE_WRITE
不将返回的实体添加到缓存。
INTERNET_FLAG_NO_COOKIES
不会自动向请求添加 Cookie 标头,也不会自动将返回的 Cookie 添加到 Cookie 数据库。
INTERNET_FLAG_NO_UI
禁用 Cookie 对话框。
INTERNET_FLAG_PASSIVE
使用被动 FTP 语义。 InternetOpenUrl 将此标志用于 FTP 文件和目录。
INTERNET_FLAG_PRAGMA_NOCACHE
强制源服务器解析请求,即使代理上存在缓存副本也是如此。
INTERNET_FLAG_RAW_DATA
检索 FTP 目录信息时,以 WIN32_FIND_DATA 结构的形式返回数据。 如果未指定此标志,或者调用是通过 CERN 代理进行的, InternetOpenUrl 将返回目录的 HTML 版本。

Windows XP 和 Windows Server 2003 R2 及更早版本: 检索 Gopher 目录信息时,还会以 GOPHER_FIND_DATA 结构的形式返回数据。

INTERNET_FLAG_RELOAD
强制从源服务器下载请求的文件、对象或目录列表,而不是从缓存下载。
INTERNET_FLAG_RESYNCHRONIZE
如果资源自上次下载以来已修改,则重新加载 HTTP 资源。 将重新加载所有 FTP 资源。

Windows XP 和 Windows Server 2003 R2 及更早版本: Gopher 资源也会重新加载。

INTERNET_FLAG_SECURE
使用安全事务语义。 这相当于使用安全套接字层/专用通信技术 (SSL/PCT) ,仅在 HTTP 请求中有意义。

[in] dwContext

指向变量的指针,该变量指定应用程序定义的值以及返回的句柄传递给任何回调函数。

返回值

如果成功建立连接,则返回 URL 的有效句柄;如果连接失败,则返回 NULL 。 若要检索特定错误消息,请调用 GetLastError。 若要确定拒绝访问服务的原因,请调用 InternetGetLastResponseInfo

注解

如果使用的 URL 包含相对 URL 和用空格分隔的基 URL,请先调用 InternetCanonicalizeUrl

这是应用程序可用于通过 WinINet 支持的任何协议检索数据的常规函数。 当应用程序不需要访问协议的特定信息,而只需要与 URL 对应的数据时,此函数特别有用。 InternetOpenUrl 函数分析 URL 字符串,建立与服务器的连接,并准备下载 URL 标识的数据。 然后,应用程序可以将 InternetReadFile (用于文件) 或 InternetFindNextFile () 目录来检索 URL 数据。 无需在 InternetOpenUrl 之前调用 InternetConnect

Windows XP 和 Windows Server 2003 R2 及更早版本: InternetOpenUrl 在端口小于 1024 时禁用 Gopher,但端口 70(标准 Gopher 端口)和端口 105 除外,通常用于 Central Services 组织 (CSO) 名称搜索。

调用应用程序使用 InternetOpenUrl 返回的 HINTERNET 句柄后,必须使用 InternetCloseHandle 函数将其关闭。

注意在异步模式下工作时, (InternetOpendwFlags 参数指定INTERNET_FLAG_ASYNC) ,而 dwContext 参数为零 (INTERNET_NO_CALLBACK) ,则会话句柄上使用 InternetSetStatusCallback 设置的回调函数将不会调用,但调用仍将在异步模式下执行

与 WinINet API 的所有其他方面一样,无法从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。

注意 WinINet 不支持服务器实现。 此外,不应从服务使用它。 对于服务器实现或服务,请使用 Microsoft Windows HTTP Services (WinHTTP)
 

注意

wininet.h 标头将 InternetOpenUrl 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wininet.h
Library Wininet.lib
DLL Wininet.dll

另请参阅

处理统一资源定位符

WinINet 函数