'C++ cpr REST GET not returning data

Using C++ and Visual Studio 2022, cpr REST GET is not returning data. Status code is 0 but data not returned. The server log shows the GET operated correctly on the server. The URL, when tested from a command prompt with "curl" returns the data, but the C++ program using cpr does not.

string rest_get(string url)
{
    ofstream CrnActLog;
    CrnActLog.open("..\\CrnAct.log", ofstream::out | ofstream::app);
    CrnActLog << GetTimeNow() << "- " <<"Initiating GET call to " << url << endl;

    Response r = cpr::Get(Url{ url.c_str() },
            Authentication{ "restService", "rest@pf" },
            Parameters{ {"anon", "true"}, {"key", "value"} });

    CrnActLog << GetTimeNow() << "- " << "r.status_code  " << r.status_code << endl;
    CrnActLog << GetTimeNow() << "- " << "r.header[content-type]  " << r.header["content-type"] << endl;
    CrnActLog << GetTimeNow() << "- " << "r.text  " << r.text << endl;

    r.status_code;                  // 200
    r.header["content-type"];       // application/json; charset=utf-8
    r.text;                         // JSON text string

    Json::Value root;

    int page = root["page"].asInt();
    Json::Value total = root["total"];
    Json::Value data = root["data"];

    CrnActLog << GetTimeNow() << "- " <<"rest_call returned " << r.text << endl;
    CrnActLog.close();
    return r.text;
}

After filling in the url, and performing cpr::Get, I expected r.text to contain the json data returned.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source