我正在处理WinInet,我想知道HttpAddRequestHeaders函数(使用HttpOpenRequest句柄)设置的头与HttpSendRequest函数发送的头之间的实际区别是什么。
为简化我的代码,有一个更好的地方来定义这样的标题?我想避免处理这两种方式
答案 0 :(得分:3)
根据Microsoft文档:
该功能还允许客户端指定要发送给的可选数据 紧跟请求标头的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。
'希望有所帮助