0

是否可以将 HTTP 请求的主体作为数据流存储在内存中。

具体来说,我正在使用 libcurl C 库编写一些 HTTP 请求,其想法是将 HTTP 响应的主体放在内存中,而不是写入磁盘。

各种 curl_easy_setopt 选项(CURLOPT_WRITEFUNCTION、CURLOPT_WRITEDATA)实际上将响应的主体写入文件。我想要的是能够直接处理身体中的数据流,不管它是什么。

适合的东西:

char* dataStream = HTTP_RESPONSE_BODY

这是因为 HTTP 正文将被传递给其他东西以进行进一步处理并写入磁盘并读回需要时间,尤其是对于大文件。我知道我可能没有足够的内存来保存大数据,但它肯定会比写入磁盘并再次读取要快。

4

1 回答 1

3

您可以通过使 cURL 与原型匹配来告诉 cURL 将数据传递给您自己定义的函数:size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);并调用:curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);

这在官方 libcurl 教程中提到:http ://curl.haxx.se/libcurl/c/libcurl-tutorial.html

于 2013-08-05T12:39:22.833 回答