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-terminated 字符串的指针,该字符串指定代理访问时要使用的代理服务器的名称,方法是将 dwAccessType 设置为 INTERNET_OPEN_TYPE_PROXY。 请勿使用空字符串,因为 InternetOpen 会将其用作代理名称。 WinINet 函数仅识别 CERN 类型代理(仅 HTTP)和 TIS FTP 网关(仅 FTP)。 如果安装了 Microsoft Internet Explorer,则这些函数还支持 SOCKS 代理。 FTP 请求可以通过 CERN 类型代理进行,方法是将其更改为 HTTP 请求,或使用 InternetOpenUrl。 如果 dwAccessType 未设置为 INTERNET_OPEN_TYPE_PROXY,则忽略此参数,应 NULL。 有关列出代理服务器的详细信息,请参阅 启用 Internet 功能 列出代理服务器 部分。

[in] lpszProxyBypass

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

默认情况下,WinINet 将绕过使用主机名“localhost”、“loopback”、“127.0.0.1”或“[::1]”的请求的代理。 此行为存在,因为远程代理服务器通常无法正确解析这些地址。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 服务(WinHTTP)
 

注意

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

要求

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

另请参阅

启用 Internet 功能

WinINet 函数