Qt Http body请求 类比postman

该代码片段展示了如何使用Qt的QNetworkAccessManager进行POST请求,设置URL和Content-Type头信息,发送JSON数据,并处理可能的错误。它还涉及到了事件循环以等待请求完成,以及解析和打印HTTP响应的状态码和错误信息。
 QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
    QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType,this);

    //设置url
    QString url = "http://Your Host:Your Port/api/user/login";
    //设置头信息
    QNetworkRequest requestInfo;
    requestInfo.setUrl(QUrl(url));
    requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));



	 QJsonObject jsonObj;
    jsonObj.insert("account","");
    jsonObj.insert("password","123456lpj");
    QJsonDocument document;
    document.setObject(jsonObj);
    QByteArray content = document.toJson(QJsonDocument::Compact);
  QNetworkReply *reply =  m_pHttpMgr->post(requestInfo, content);
    //添加事件循环机制,返回后再运行后面的
    QEventLoop eventLoop;
    //      connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
    QObject::connect(m_pHttpMgr, &QNetworkAccessManager::finished, &eventLoop, &QEventLoop::quit);

    eventLoop.exec();       //block until finish
//错误处理
    if (reply->error() == QNetworkReply::NoError)
    {
        qDebug() << "request protobufHttp NoError";
    }
    else
    {
        qDebug()<<"request protobufHttp handle errors here";
        QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
        //statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
        qDebug( "request protobufHttp found error ....code: %d %d\n", statusCodeV.toInt(), (int)reply->error());
        qDebug(qPrintable(reply->errorString()));
    }

//请求收到的结果
    QJsonObject json;
    QByteArray responseByte = reply->readAll();
    json = QJsonDocument::fromJson(responseByte).object();

    qDebug() << "request protobufHttp NoError";

类比postman
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值