httpSendRequestA 函数 (wininet.h)

将指定的请求发送到 HTTP 服务器,允许调用方发送超出通常传递给 HttpSendRequestEx 的数据的额外数据。

语法

BOOL HttpSendRequestA(
  [in] HINTERNET hRequest,
  [in] LPCSTR    lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] LPVOID    lpOptional,
  [in] DWORD     dwOptionalLength
);

参数

[in] hRequest

调用 HttpOpenRequest 函数返回的句柄。

[in] lpszHeaders

指向以 null 结尾的字符串的指针,该字符串包含要追加到请求的其他标头。 如果没有要追加的其他标头,此参数可以为 NULL

[in] dwHeadersLength

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

[in] lpOptional

指向缓冲区的指针,该缓冲区包含将在请求标头之后立即发送的任何可选数据。 此参数通常用于 POST 和 PUT 操作。 可选数据可以是要发布到服务器的资源或信息。 如果没有要发送的可选数据,此参数可以为 NULL

[in] dwOptionalLength

可选数据的大小(以字节为单位)。 如果没有要发送的可选数据,此参数可以为零。

返回值

如果成功,则返回 TRUE ,否则返回 FALSE 。 要获得更多的错误信息,请调用 GetLastError。

注解

HttpSendRequest 将指定的请求发送到 HTTP 服务器,并允许客户端指定要随请求一起发送的其他标头。

函数还允许客户端指定要紧跟在请求标头之后发送到 HTTP 服务器的可选数据。 此功能通常用于“写入”操作,例如 PUT 和 POST。

发送请求后,将读取来自 HTTP 服务器的状态代码和响应标头。 这些标头在内部维护,并通过 HttpQueryInfo 函数提供给客户端应用程序。

应用程序可以在对 HttpSendRequest 的多个调用中使用相同的 HTTP 请求句柄,但在再次调用函数之前,应用程序必须读取上一次调用返回的所有数据。

在脱机模式下,如果在 Internet 缓存中找不到资源, HttpSendRequest 将返回 ERROR_FILE_NOT_FOUND

HttpSendRequest 有两个版本:httpSendRequestA (用于 ANSI 生成) ,httpSendRequestW (用于 Unicode 生成) 。 如果 dwHeadersLength 为 -1L 且 lpszHeaders 不为 NULL,则会发生以下情况:如果调用 HttpSendRequestA ,则函数假定 lpszHeaders (ASCIIZ) 零终止,并计算长度。 如果调用 HttpSendRequestW ,则函数将失败并 ERROR_INVALID_PARAMETER

注意HttpSendRequestA 函数将标头表示为 ISO-8859-1 字符,而不是 ANSI 字符。 HttpSendRequestW 函数将标头表示为转换为 UTF-16LE 字符的 ISO-8859-1 字符。 因此,当要添加的标头可以包含非 ASCII 字符时,使用 HttpSendRequestW 函数绝不是安全的。 相反,应用程序可以使用 MultiByteToWideCharWideCharToMultiByte 函数,并将 Codepage 参数设置为 28591,以在 ANSI 字符和 UTF-16LE 字符之间映射。
 
与 WinINet API 的所有其他方面一样,无法从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。
注意 WinINet 不支持服务器实现。 此外,不应从服务使用它。 对于服务器实现或服务,请使用 Microsoft Windows HTTP Services (WinHTTP)
 

注意

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

要求

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

另请参阅

HTTP 会话

WinINet 函数