libcurl CURLOPT_WRITEDATA не записывает

Не могу записать ответ от api в CURLOPT_WRITEDATA

#define CURL_STATICLIB
#include <curl/curl.h>
#include <string>
#include <iostream>


static size_t write_data(char* ptr, size_t size, size_t nmemb, std::string* data)
{
    if (data)
    {

        data->append(ptr, size * nmemb);
        return size * nmemb;
    }
    else
        std::cout << "error";
        return 0;
}
int getIdGroop(std::string ACCESS_TOKEN, std::string VERSION, std::string LINK, std::string name) {
    std::string formedLink = LINK + "groups.getById?group_ids=" + name + "&access_token=" + ACCESS_TOKEN + "&v=" + VERSION;
    std::string readBuffer;

    CURL* curl;
    CURLcode response;

    curl = curl_easy_init();

    curl_easy_setopt(curl, CURLOPT_URL, formedLink.c_str());
    
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
    response = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    if (response)  std::cout << readBuffer << std::endl;
    else std::cout << curl_easy_strerror(response) << std::endl;
    return 0;
}
int main()
{
    const std::string ACCESS_TOKEN = "***";
    const std::string VERSION = "5.130";
    const std::string LINK = "https://api.vk.com/method/";
    std::string answer;
    std::string name;
    std::cin >> name;
    getIdGroop(ACCESS_TOKEN, VERSION, LINK, name);

    system("pause");
    return 0;
}

Ответы (2 шт):

Автор решения: Sergey Tatarincev

Дело не в получении данных.

Результат запроса у вас получается

  response    CURLE_PEER_FAILED_VERIFICATION (60) CURLcode

Т.е. сертификат SSL не проходит верификацию в curl (как он это делает - читайте документацию).

Исправьте анализ ошибки и отключите проверку SSL:

    curl = curl_easy_init();    
    curl_easy_setopt(curl, CURLOPT_URL, formedLink.c_str());
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); // ОТКЛЮЧАЕМ ПРОВЕРКУ СЕРТИФИКАТА СЕРВЕРА
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
    response = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    if (response==CURLE_OK)  std::cout << readBuffer << std::endl; // Запрос отработал если код CURLE_OK
    else std::cout << curl_easy_strerror(response) << std::endl;
→ Ссылка
Автор решения: Galahad

Дело было не в SSL ректификате, привел функцию к виду

static size_t write_data(char* ptr, size_t size, size_t nmemb, void* data)
{
    if (data)
    {

        ((std::string*)data)->append(ptr, size * nmemb);
        return size * nmemb;
    }
    else
        std::cout << "error";
        return 0;
} 

Самое не приятное, что меня запутало, в отладчике readBuffer не показывает содержимое, но если использовать функцию fing() то корректно выводит результат.

→ Ссылка