HttpAddRequestHeaders添加的headers和HttpSendRequest发送的有什么区别

What is the difference between the headers added by HttpAddRequestHeaders and the ones sent by HttpSendRequest

我正在处理 WinInet,我想知道 HttpAddRequestHeaders 函数(使用 HttpOpenRequest 句柄)设置的 headers 与 HttpSendRequest 发送的 headers 之间的实际区别是什么函数。

为了简化我的代码,有一个更好的地方可以定义这样的 headers?我想避免处理这两种方式

根据 Microsoft 文档:

  • HttpSendRequest function

    The function also lets the client specify optional data to send to the HTTP server immediately following the request headers. This feature is generally used for "write" operations such as PUT and POST.

  • HttpAddRequestHeaders function

    • HTTP_ADDREQ_FLAG_ADD

      如果 header 不存在则添加。与 HTTP_ADDREQ_FLAG_REPLACE.

    • 一起使用
    • HTTP_ADDREQ_FLAG_ADD_IF_NEW

      仅当 header 不存在时才添加它;否则返回错误。

    • HTTP_ADDREQ_FLAG_COALESCE

      合并 header 个同名。

    • HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA

      合并 header 同名。例如,使用此标志添加 "Accept: text/" 后跟 "Accept: audio/" 会形成单个 header "Accept: text/, audio/"。这导致发现的第一个 header 被合并。由调用应用程序确保关于 coalesced/separate headers.

    • 的内聚方案
    • HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON

      使用分号合并 header 个同名。

    • HTTP_ADDREQ_FLAG_REPLACE

      替换或删除 header。如果 header 值为空并且找到 header,则将其删除。如果不为空,则替换 header 值。

因此,如果您只想 "add request headers",那么 API 中的任何一个都会为您提供相同的功能。

如果你想做 "something special"(比如 "coalesce headers"),你可以选择其中之一 API。

'希望有帮助