Как использовать libcurl для хранения ответа gzip от REST API? - PullRequest
1 голос
/ 22 апреля 2019

У нас есть один REST API, который возвращает ответ в форме gzip. Всякий раз, когда я загружаю тот же самый ответ от почтальона и сохраняю его как .zip, он сохраняется правильно. Однако, когда я пишу ответ в файл .zip с помощью методов libcurl, файл поврежден неверными данными. Не найдено различий при сравнении ответов от методов почтальона и 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);
});
...