我们有一个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);
});