如何在 Poco 中接收 POST 请求内容?

Abh*_*nav 5 poco-libraries

我在 Poco 中编写了一个 HTTP 客户端,它将 POST 请求发送到 HTTPServer 以下是片段

Poco::Net::HTTPClientSession s("127.0.0.1", 9090);
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST, "/echo");

std::string body("rs=this is a random request body");
request.setContentLength(body.length());
s.sendRequest(request) << body;
Run Code Online (Sandbox Code Playgroud)

服务器收到请求,但以下是我能找到的获取蒸汽的唯一方法(即 rs=this is a ....)

void SRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& hreq, Poco::Net::HTTPServerResponse& resp){
std::istream &i = hreq.stream();
        Poco::StreamCopier::copyStream(i, ss, hreq.getContentLength());
}
Run Code Online (Sandbox Code Playgroud)

因此,获取客户端发送的内容的方法是使用字符串。有没有更简单/直接的方式来获取内容?

Ale*_*lex 4

您当前所做的事情不涉及任何字符串 - 您正在从 istream 复制到 ostream。如果你想避免这种情况,你可以将 istream 的内容读入 char 数组,如下所示:

std::istream &i = hreq.stream();
int len = hreq.getContentLength();
char* buffer = new char[len];
i.read(buffer, len);
Run Code Online (Sandbox Code Playgroud)

当然,您应该注意避免泄漏。