我需要创建一个接受帖子数据的c ++ cgi app。我将接受一个json对象。如何获得有效载荷?
我可以使用下面的
获取获取数据int main() {
bool DEBUG = true;
cout << "content-type: text/html" << endl << endl;
//WHAT GOES HERE FOR POST
json=?????
//THIS IS A GET
query_string = getenv("QUERY_STRING");
}
答案 0 :(得分:2)
如果方法类型是 POST (您可能还想检查这个),那么POST数据将写入stdin。因此,您可以使用以下标准方法:
// Do not skip whitespace, more configuration may also be needed.
cin >> noskipws;
// Copy all data from cin, using iterators.
istream_iterator<char> begin(cin);
istream_iterator<char> end;
string json(begin, end);
// Use the JSON data somehow.
cout << "JSON was " << json << endl;
这会将 cin 中的所有数据读入 json ,直到发生EOF。
答案 1 :(得分:2)
假设apache:
你会发现它靠近底部,但是后期数据是通过stdin提供的。
#include <iostream>
#include <string>
#include <sstream>
int main()
{
bool DEBUG = true;
std::cout << "content-type: text/html\n\n"; // prefer \n\n to std::endl
// you probably don't want to flush immediately.
std::stringstream post;
post << std::cin.rdbuf();
std::cout << "Got: " << post.str() << "\n";
}