httpAddRequestHeadersW 函数 (wininet.h)

将一个或多个 HTTP 请求标头添加到 HTTP 请求句柄。

语法

BOOL HttpAddRequestHeadersW(
  [in] HINTERNET hRequest,
  [in] LPCWSTR   lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] DWORD     dwModifiers
);

参数

[in] hRequest

调用 HttpOpenRequest 函数返回的句柄。

[in] lpszHeaders

指向字符串变量的指针,其中包含要追加到请求的标头。 每个标头必须由 CR/LF (回车/换行符) 对终止。

[in] dwHeadersLength

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

[in] dwModifiers

控制此函数语义的一组修饰符。 此参数可以是以下值的组合。

含义
HTTP_ADDREQ_FLAG_ADD
如果标头不存在,则添加该标头。 与 HTTP_ADDREQ_FLAG_REPLACE 一起使用。
HTTP_ADDREQ_FLAG_ADD_IF_NEW
仅当标头尚不存在时才添加标头;否则,将返回错误。
HTTP_ADDREQ_FLAG_COALESCE
合并同名的标头。
HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
合并同名的标头。 例如,使用此标志添加“Accept: text/*”后跟“Accept: audio/*”会导致形成单个标头“Accept: text/*, audio/*”。 这会导致找到的第一个标头合并。 由调用应用程序决定,以确保与合并/独立标头相关的一致方案。
HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON
使用分号合并同名的标头。
HTTP_ADDREQ_FLAG_REPLACE
替换或删除标头。 如果标头值为空且找到标头,则会将其删除。 如果不为空,则替换标头值。

返回值

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

注解

HttpAddRequestHeaders 将其他自由格式的标头追加到 HTTP 请求句柄,供需要详细控制发送到 HTTP 服务器的确切请求的复杂客户端使用。

请注意,对于基本 HttpAddRequestHeaders,应用程序可以在单个缓冲区中传入多个标头。 如果应用程序尝试删除或替换标头,则 lpszHeaders 中只能提供一个标头。

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

注意

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

要求

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

另请参阅

HTTP 会话

WinINet 函数