C++ 如何将JSON正文作为POST请求分配给Boost库1.70 http::request?

C++ 如何将JSON正文作为POST请求分配给Boost库1.70 http::request?,c++,rest,http,boost,C++,Rest,Http,Boost,我是Boost库的新手。我尝试使用Boost::HTTP库创建RESTHTTP请求。 我的问题是如何简单地将JSON负载分配给http请求 下面的代码片段显示了我当前的try,它成功连接,但未分配有效负载 http::request<http::string_body> req{ http::verb::post, LOGIN_PATH, 10 }; req.set(beast::http::field::content_type, "application/json&qu

我是Boost库的新手。我尝试使用Boost::HTTP库创建RESTHTTP请求。 我的问题是如何简单地将JSON负载分配给http请求

下面的代码片段显示了我当前的try,它成功连接,但未分配有效负载

http::request<http::string_body> req{ http::verb::post, LOGIN_PATH, 10 };
req.set(beast::http::field::content_type, "application/json");
req.body() = std::move(serviceUser);

// Send the HTTP request to the remote host
http::write(stream, req);
// This buffer is used for reading and must be persisted
beast::flat_buffer buffer;

// Declare a container to hold the response
http::response<http::dynamic_body> res;

// Receive the HTTP response
http::read(stream, buffer, res);

// Write the message to standard out
std::cout << res << std::endl;

return "OK";
http::request req{http::verb::post,LOGIN_PATH,10};
请求集(beast::http::field::content_type,“应用程序/json”);
req.body()=std::move(serviceUser);
//将HTTP请求发送到远程主机
http::write(流,请求);
//此缓冲区用于读取,必须持久化
beast::flat_缓冲区;
//声明一个容器来保存响应
http::res响应;
//接收HTTP响应
http::read(流、缓冲区、res);
//将消息写入标准输出

std::我想您是否需要在发送请求之前调用
prepare\u payload()
方法,从文档中可以看出:“此函数将根据正文的属性调整内容长度并传输编码字段值。”您可能可以自己添加
内容长度
标题,但我建议使用库方法,因为它不仅包括长度,还包括编码,它还可以在后台执行一些与身体相关的操作。
Content-Length
头是规范所要求的,如果它是ommited但正文被发送的,那么接收方通常会忽略正文,因此请求无论如何都不起作用。boost库在发送时可能会忽略消息体(它可能只发送消息体的N个字节以节省吞吐量,从报头取N,那么默认值可能为0)。我认为您需要在发送请求之前调用
prepare\u payload()
方法,从文档:“此函数将根据正文的属性调整内容长度和传输编码字段值。“您可能可以自己添加
内容长度
标题,但我建议使用library方法,因为它不仅可以添加长度,还可以添加编码,还可以在后台添加一些与正文相关的内容。
Content-Length
头是规范所要求的,如果它是ommited但正文被发送的,那么接收方通常会忽略正文,因此请求无论如何都不起作用。boost库在发送时可能会忽略消息体(它可能只发送消息体的N个字节以节省吞吐量,从报头中取N,然后默认值可能为0)
std::stringstream strStream;
        
strStream << "{\"userName\" : lena, \"password\" : liebe }";
serviceUser = strStream.str();