InternetOpenA 函数 (wininet.h)

初始化应用程序对 WinINet 函数的使用。

语法

HINTERNET InternetOpenA(
  [in] LPCSTR lpszAgent,
  [in] DWORD  dwAccessType,
  [in] LPCSTR lpszProxy,
  [in] LPCSTR lpszProxyBypass,
  [in] DWORD  dwFlags
);

参数

[in] lpszAgent

指向 以 null 结尾的字符串的指针,该字符串指定调用 WinINet 函数的应用程序或实体的名称。 此名称用作 HTTP 协议中的用户代理。

[in] dwAccessType

所需的访问类型。 此参数的取值可为下列值之一:

含义
INTERNET_OPEN_TYPE_DIRECT
在本地解析所有主机名。
INTERNET_OPEN_TYPE_PRECONFIG
从注册表检索代理或直接配置。
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY
从注册表中检索代理或直接配置,并阻止使用启动 Microsoft JScript 或 Internet 安装程序 (INS) 文件。
INTERNET_OPEN_TYPE_PROXY
除非提供了代理绕过列表并且要解析的名称会绕过代理,否则会将请求传递到代理。 在本例中,函数使用 INTERNET_OPEN_TYPE_DIRECT

[in] lpszProxy

指向以 null 结尾的字符串的指针,该字符串指定代理服务器的名称, () 通过将 dwAccessType 设置为 INTERNET_OPEN_TYPE_PROXY 来指定代理访问时要使用的 请勿使用空字符串,因为 InternetOpen 将使用它作为代理名称。 WinINet 函数仅识别 (HTTP) 的 CERN 类型代理,TIS FTP 网关仅 (FTP) 。 如果安装了 Microsoft Internet Explorer,这些功能也支持 SOCKS 代理。 可以通过 CERN 类型代理将 FTP 请求更改为 HTTP 请求或使用 InternetOpenUrl 发出。 如果未将 dwAccessType 设置为 INTERNET_OPEN_TYPE_PROXY,则此参数将被忽略,并且应为 NULL。 有关列出代理服务器的详细信息,请参阅启用 Internet 功能的列出代理服务器部分。

[in] lpszProxyBypass

指向 以 null 结尾的字符串的指针,该字符串指定主机名或 IP 地址的可选列表,或者两者,当 dwAccessType 设置为 INTERNET_OPEN_TYPE_PROXY 时,不应通过代理路由这些主机名或 IP 地址。 该列表可以包含通配符。 请勿使用空字符串,因为 InternetOpen 将使用它作为代理绕过列表。 如果此参数指定“<local>”宏,则函数将绕过任何不包含句点的主机名的代理。

默认情况下,对于使用主机名“localhost”、“loopback”、“127.0.0.1”或“[::1]”的请求,WinINet 将绕过代理。 之所以存在此行为,是因为远程代理服务器通常无法正确解析这些地址。Internet Explorer 9: 可以使用“-loopback>”<宏从代理绕过列表中删除本地计算机。

如果未将 dwAccessType 设置为 INTERNET_OPEN_TYPE_PROXY,则此参数将被忽略,并且应为 NULL

[in] dwFlags

选项。 此参数可以是以下值的组合。

含义
INTERNET_FLAG_ASYNC
仅对从此函数返回的句柄降序的句柄发出异步请求。
INTERNET_FLAG_FROM_CACHE
不发出网络请求。 所有实体都从缓存返回。 如果请求的项不在缓存中,则返回合适的错误,例如ERROR_FILE_NOT_FOUND。
INTERNET_FLAG_OFFLINE
INTERNET_FLAG_FROM_CACHE 相同。 不发出网络请求。 所有实体都从缓存返回。 如果请求的项不在缓存中,则返回合适的错误,例如ERROR_FILE_NOT_FOUND。

返回值

返回应用程序传递给后续 WinINet 函数的有效句柄。 如果 InternetOpen 失败,则返回 NULL。 若要检索特定错误消息,请调用 GetLastError

注解

InternetOpen 是应用程序调用的第一个 WinINet 函数。 它告知 Internet DLL 初始化内部数据结构并准备将来从应用程序调用。 应用程序使用完 Internet 函数后,应调用 InternetCloseHandle 以释放句柄和任何关联的资源。

应用程序可以发出任意数量的 InternetOpen 调用,但一次调用通常就足够了。 应用程序可能需要为每个 InternetOpen 实例定义单独的行为,例如为每个实例配置的不同代理服务器。

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

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

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

注意

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

要求

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

另请参阅

启用 Internet 功能

WinINet 函数