Boost :: Asio HTTP帖子中的空身体

Empty body in Boost::ASIO HTTP POST

本文关键字:Asio HTTP Boost      更新时间:2023-10-16

我尝试使用以下代码使用Post方法。在服务器侧,身体总是空的。

tcp::endpoint ip_port(address::from_string(host), port);
socket.connect(ip_port);
boost::asio::streambuf request;
std::ostream request_stream(&request);
request_stream << "POST /myservice HTTP/1.1nn";
request_stream << "Host:" << "host:port" << "rn";
request_stream << "User-Agent: C/1.0" << "rn";
request_stream << "Content-Type: application/json; charset=utf-8rn";
request_stream << "Accept: */*rn";
request_stream << "Content-Length: ";
request_stream << json.length() + "rn";
request_stream << "Connection: closernrn"; 
request_stream << json;
boost::asio::write(socket, request);

我通过从其他REST客户端发送请求来检查服务器端,它可以正常工作。请让我知道我做错了什么。

最后,我找到了它。第一行中的 n n的问题。如果有两个 n,请求结束。我尝试了以下代码,并且能够将JSON主体放在服务器端。

requestStream << "POST " << "/myservice" << " HTTP/1.1rn";
requestStream << "Host: " << "myhost" << "rn";
requestStream << "Accept: application/jsonrn";
requestStream << "Content-Type: application/json; charset=UTF-8rn";
requestStream << "Content-Length: " << json.length() << "rn";
requestStream << "rn";
requestStream << json << "nn";