将JSON对象从C ++返回到HTTP POST REST调用

时间:2012-06-27 20:30:29

标签: c++ json web-services http fastcgi

我有一个通过REST向Web公开的C ++ API。我已将应用程序编写为FastCGI进程。我可以使用正文中的数据发布到应用程序并获取文本。但是现在,我希望将数据作为JSON对象返回,而不是文本。

我已将输出打包成JSON文件。我只需要知道如何将其传递给请求者。

编辑:

我目前有这样的事情:http://pastebin.com/vhC30kTJ

在此,我在printcontent(string)函数中打印文本。我使用cout打印的文本由FastCGI传递回HTTP请求者。我想传递JSON,我不知道该怎么做。我能够将数据写入JSON文件。我是否传回JSON文件或传回json样式字符串?我很迷惑。

1 个答案:

答案 0 :(得分:1)

理想情况下,形成JSON的函数应该接受std::ostream &的参数。然后,如果你想写一个文件,你传递std::ofstream,如果你想把它写入标准输出(这是你想要做的,在这种情况下,它被发送到浏览器)你可以传递std::cout。确保首先写出所需的HTTP标头和空行,否则服务器/浏览器会尝试将JSON解释为HTTP标头。

void makejson(ostream & output, string content)
{
    /* output << "{\"some\":\"json\"}" */
}

// Write to file
ofstream file("data.json");
makejson(file, "somedata");
file.close();

// Write to browser
cout << "Content-Type: application/json\r\n\r\n";
makejson(cout, "somedata");