我正在使用 libcurl 发送 HTTP 发布请求并随后处理响应。收到响应后,库使用CURLOPT_WRITEFUNCTION
通过curl_easy_setopt
.
// callback function
std::size_t on_data(const char* buffer, const std::size_t size, const std::size_t nmemb, void* context);
从文档中不清楚你可以将数据留在缓冲区中(通过从回调返回 0)或者你必须将数据复制到本地缓冲区,然后在每个后续回调中继续附加到这个缓冲区,直到你收到整个消息.
我的问题是:
- 获取整个消息长度的最佳方法是什么?是来自
Content-Length
标题CURLOPT_WRITEHEADER
吗? - 有没有办法避免复制部分响应,而是等待收到最终消息,然后将其全部处理?