c++ - HttpAddRequestHeaders 添加的 headers 和 HttpSendRequest 发送的 headers 有什么区别
问题描述
我正在处理 WinInet,我想知道 HttpAddRequestHeaders 函数(使用 HttpOpenRequest 句柄)设置的标头与 HttpSendRequest 函数发送的标头之间的实际区别是什么。
为了简化我的代码,有一个更好的地方来定义这样的标题?我想避免处理这两种方式
解决方案
根据 Microsoft 文档:
-
该函数还允许客户端指定在请求标头之后立即发送到 HTTP 服务器的可选数据。此功能通常用于“写入”操作,例如 PUT 和 POST。
-
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。
'希望有帮助
推荐阅读
- regex - 正则表达式获取多个非 kebab-case 样式的字符串
- c++ - 更改为 std::vector 导致分段错误
- python - 每 x 分钟发送一次 api 请求并使用状态更新上下文
- php - 打印和回显导致我的代码不起作用
- google-sheets - 我可以在 Google 表格中简化我的脚本吗?
- python - 如何优化 Pandas DataFrame 单列的所有行的 Levenshtein 距离计算?
- flutter - Flutter table_calendar 今天加载
- javascript - 反应按钮 onClick 引用 SVG 而不是事件
- node.js - 一次使用 mongoose 插入大量相同文档的最有效和最快的方法
- python - 根据模型选择动态设置默认图像 - Django