如何从http_request获取请求正文?我尝试了http_request.body(),它不起作用,http_request.body()返回一个空字符串。
#include "pch.h"
#include <iostream>
#include <boost/beast.hpp>
int main()
{
std::string s =
"POST /cgi/message.php HTTP/1.1\r\n"
"Content-Length: 5\r\n"
"\r\n"
"abcde";
boost::system::error_code ec;
boost::beast::http::request_parser<boost::beast::http::string_body> p;
p.put(boost::asio::buffer(s), ec);
boost::beast::http::request<boost::beast::http::string_body> r = p.get();
auto b = r.body(); // !!! b is an empty string! can't get request body!
std::cout << "Hello World!\n";
}
编辑: 现在,我知道为什么我无法获取请求正文,默认情况下,第一次调用http_parser.put(),http_parser仅解析http行和http字段,下次调用http_parser.put(),http_parser将解析http消息正文。 如果我们有一个完整的http消息已包含http正文,则在对http_parser提交完整的http请求之前,必须调用http_request.eager(true)来控制http_parser现在解析http正文。