【发布时间】:2012-10-15 20:35:32
【问题描述】:
我正在使用 libcurl 发送 HTTP 发布请求并随后处理响应。收到响应后,库使用通过curl_easy_setopt 提供给CURLOPT_WRITEFUNCTION 属性的函数回调我的程序。
// 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吗? - 有没有办法避免复制部分响应,而是等待收到最终消息,然后对其进行完整处理?
【问题讨论】: