【问题标题】:HTTP BODY in memory rather than writing to diskHTTP BODY 在内存中而不是写入磁盘
【发布时间】:2013-08-05 11:52:25
【问题描述】:

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

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

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

一些事情的曲调:

char* dataStream = HTTP_RESPONSE_BODY

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

【问题讨论】:

    标签: c http libcurl


    【解决方案1】:

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

    【讨论】:

    • 谢谢!会试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2023-03-08
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多