http - Libcurl 分块 http 消息收到回调
问题描述
当收到分块的 http 消息时,libcurl 是否会公开一些要调用的回调?一台服务器与客户端建立基于彗星的 http 连接。因此,客户端使用常规 http 发送请求以打开连接,服务器响应带有分块 http 消息,其中包含要由客户端处理的信息。使用打开的连接,服务器可能会在一个 http 请求上向客户端发送几条消息。每个都必须以不同的方式处理。
有没有办法在不等待连接关闭的情况下发送这些消息?
解决方案
默认情况下,libcurl 不会公开块限制/边界,如果这是您所要求的。libcurl 将“解码”分块的编码数据并使用有效负载内容调用写入回调,而不会向应用程序透露分块。然后,libcurl 可以为每个传入的块调用一次或多次写入回调。
或者,您可以走更核心的路线并要求 libcurl 提供“未编码”的数据,以便您的回调获取整个内容,包括分块编码元数据,以便您自己解码。你可以通过使用CURLOPT_HTTP_CONTENT_DECODING选项告诉 libcurl 这样做。
推荐阅读
- php - 在 Laravel 8 中使用 php intl 包的配置
- database - 我想访问飞镖中的变量
- javascript - 数组推送仅推送数组的最后一个值
- java - 在 main 方法中创建类本身的实例时,对象是否在 main 方法结束后立即被删除?
- sql - postgresql 最高值多重连接
- javascript - 如何根据功能组件中的其他状态设置状态?
- angular - Angular DatePipe 输出 - 显示 UTC 而不是 GMT
- c++ - 为什么变量 - 标记为 <<<<<< 未定义
- sql - 对多行求和以检查值是否小于 django 中的引用模型
- php - 使用 php pdo 在 chartjs 中每月明智的网站访问者统计