如何使用libcurl存储来自REST API的gzip响应?

时间:2019-04-22 12:49:17

标签: c++ libcurl

我们有一个REST API,它以gzip格式返回响应。每当我从邮递员下载相同的响应并将其另存为.zip时,它都会正确存储。但是,当我使用libcurl方法将响应写入.zip文件时,文件将被无效数据损坏。比较邮递员和libcurl方法的响应没有发现差异。

FILE * wfp1 = SYSS_fopen(responseFile, "w+"); //File pointer to write the REST response
if (!wfp1)
{
    perror("Write File Open:");
}

request.SetWriteDataObject(wfp1);
request.SetWriteDataFn([&](void* contents, size_t size, size_t nmemb, void *stream)
{
    char* fchar = nullptr;
    fchar = static_cast<char*>(contents);
    char* buffer = (char*)SM_alloc(nmemb + 1, sizeof(char));
    snprintf(buffer, nmemb + 1, "%s", fchar);
    fileStream.append(buffer);
    SM_free(buffer);
    return fwrite(contents, size, nmemb, (FILE*)stream);
});

0 个答案:

没有答案