内存中的HTTP BODY而不是写入磁盘

时间:2013-08-05 11:52:26

标签: c http libcurl

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

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

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

有些事情:

char* dataStream = HTTP_RESPONSE_BODY

这是因为HTTP主体将被传递给其他东西以进行进一步处理并写入磁盘并且回读将花费时间,特别是对于大文件。我知道我可能没有足够的内存来容纳大数据,但它肯定比写入磁盘并再次读取更快。

1 个答案:

答案 0 :(得分:3)

您可以告诉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