QT http server requestBody 内容为空

抓包有json内容,请求体,实际服务端读取body 返回值是空,请各位帮忙看一下,谢谢!

img

img

qDebug() << requestBody.size(); size 大小是0 !

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt: 1. 可能原因之一是客户端没有正确设置 Content-Length 头部,导致服务端无法正确读取请求体。解决办法是先确认客户端是否设置了 Content-Length 头部,如果没有,需要客户端设置正确的 Content-Length 大小。 2. 另一个可能的原因是服务端的读取请求体的部分代码有问题。在服务端进行读取时,可以使用 QT 的网络模块提供的 QHttpRequestHeader::setContentLength 函数获取请求体的长度,然后再使用 QT 的网络请求对象提供的 read 函数将请求体读取出来。如果服务端代码正确,但依然无法读取请求体,则可以考虑重写服务端代码。 以下是一个服务端示例代码,可以用于读取请求体: ```cpp void MyServer::handleRequest(QHttpRequest *req, QHttpResponse *resp) { // 获取请求体的长度 qint64 contentLength = req->header().contentLength(); QByteArray body; // 如果长度为0,则返回空的请求体 if (contentLength == 0) { resp->end(body); } // 读取请求体并返回 while (req->bytesAvailable() < contentLength) { req->waitForReadyRead(); } body = req->read(contentLength); resp->end(body); } ```

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^