c++ - 如何从 boost beast http_parser 获取 http 请求正文?
问题描述
如何从 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 请求发送到 http_parser 之前,我们必须调用 http_request.eager(true) 来控制 http_parser 现在解析 http 正文。
解决方案
推荐阅读
- react-native - 已解决 - 反应原生,socket.io 始终采用初始状态
- android-layout - 尽管在 DP 中使用了大小,为什么 android 视图大小(物理)在不同设备中并不完全相同?
- javascript - 移动网站在实际的 iPhone 12 VS chrome/firefox 开发工具上看起来不同?
- c++ - 将一个奇怪的表达式分解为转换
- python - 如何使用 SQLAlchemy 引擎一次执行多个 postgreSQL 语句?
- python - Python Pandas:通过重复项将一列分组并在相应列中连接字符串
- pdf-generation - 在 Joomla 组件中创建 PDF 文件时,外部参照表损坏
- python - userpost() 得到了一个意外的关键字参数“实例”
- javascript - 如何通过以字符串或数组形式给出的自定义顺序对对象数组进行排序?
- python - 如何设置 LSTM 向量输入和输出的大小