free_or_not 2023-04-18 20:51 采纳率: 0%
浏览 9

QT http server requestBody 内容为空

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

img

img

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-19 08:06
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自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); } ```

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

报告相同问题?

问题事件

  • 创建了问题 4月18日

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?