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-terminated 字符串的指针,其中包含要追加到请求的其他标头。 如果没有附加标头,则可以 NULL 此参数。

[in] dwHeadersLength

其他标头的大小,TCHAR。 如果此参数 -1L,并且 lpszHeadersNULL,则该函数假定 lpszHeaders 为零终止 (ASCIIZ),并计算长度。 请参阅“说明”了解具体内容。

[in] lpOptional

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

[in] dwOptionalLength

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

返回值

如果成功,则返回 TRUE;否则返回 FALSE。 若要获取扩展的错误信息,请调用 GetLastError

言论

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

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

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

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

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

有两个版本的 HttpSendRequest-HttpSendRequestA(与 ANSI 版本一起使用)和 HttpSendRequestW(与 Unicode 版本一起使用)。 如果 dwHeadersLength 为 -1L,并且 lpszHeadersNULL,则会发生以下情况:如果调用 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 服务(WinHTTP)
 

注意

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

要求

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

另请参阅

HTTP 会话

WinINet 函数