QT开发中文网

Qt C++ 实现一个http服务端,接收客户端通过post发送过来的json字符串

以下是一个使用Qt C++实现HTTP服务端,接收客户端通过POST发送的JSON字符串的示例代码:

#include <QCoreApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>

class HttpServer : public QTcpServer
{
    Q_OBJECT

public:
    explicit HttpServer(QObject *parent = nullptr) : QTcpServer(parent) {}

protected:
    void incomingConnection(qintptr socketDescriptor) override
    {
        QTcpSocket *socket = new QTcpSocket(this);
        socket->setSocketDescriptor(socketDescriptor);

        connect(socket, &QTcpSocket::readyRead, [=](){
            QByteArray requestData = socket->readAll();
            qDebug() << "Received data:" << requestData;

            // 在这里处理收到的请求数据,解析JSON等操作

            // 返回响应给客户端
            QByteArray responseData = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nHello";
            socket->write(responseData);
            socket->waitForBytesWritten();
            socket->close();
        });

        connect(socket, &QTcpSocket::disconnected, [=](){
           qDebug() << "Client disconnected";
           socket->deleteLater();
        });
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    HttpServer server;
    if (!server.listen(QHostAddress::Any, 8080)) {
        qCritical() << "Failed to start server";
        return -1;
    }

    qDebug() << "Server started at port 8080";

    return a.exec();
}

#include "main.moc"

在这个示例中,我们创建了一个HttpServer类继承自QTcpServer,重写了incomingConnection()方法来处理新连接。在连接建立后,我们读取客户端发送的数据,并进行相应的处理(如解析JSON)。最后返回响应给客户端。

请注意修改端口号和处理逻辑以适应你的需求。记得在项目配置文件(如.pro文件)中添加网络模块:

QT += network

希望这个示例能够帮助你搭建一个简单的HTTP服务端来接收客户端通过POST发送过来的JSON字符串。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://qt.0voice.com/?id=12461

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?