HttpAddRequestHeaders添加的标头与HttpSendRequest

时间:2018-04-25 03:25:08

标签: c++ wininet

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

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

1 个答案:

答案 0 :(得分:3)

根据Microsoft文档:

  • HttpSendRequest function

      

    该功能还允许客户端指定要发送给的可选数据   紧跟请求标头的HTTP服务器。这个功能是   通常用于“写”操作,如PUT和POST。

  • HttpAddRequestHeaders function

    • 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

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

因此,如果您只想做“添加请求标头”,那么API将为您提供相同的功能。

如果你想做“特殊的东西”(比如“coalesce headers”),你可以选择一个或另一个API。

'希望有所帮助