QT HTTP常见的数据提交方式

  1. application/x-www-form-urlencoded。

示例1:

QNetworkAccessManager* pNetManager = new QNetworkAccessManager;
        QUrl url("https://xxxxxxx");
        QNetworkRequest request(url);
        request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
        QUrlQuery postData;
        postData.addQueryItem("参数名1", " 参数值1");
        postData.addQueryItem("参数名2", "参数值2");
        QString strTest = postData.toString(QUrl::FullyEncoded);
        QNetworkReply* reply = pNetManager->post(request, strTest.toUtf8());
        connect(pNetManager, &QNetworkAccessManager::finished, this, &MainWindow::LoginFinished);

示例2:

        QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
        QUrl url("https://xxxxxxx");
        QString data = QString("phone="+userName);
        data += QString("&password="+userPwd);
        QNetworkRequest request;
        request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
        request.setUrl(url);
        QNetworkReply *reply = m_pHttpMgr->post(request, data.toUtf8());
        //qDebug() << document.toJson();
        //添加事件循环机制,返回后再运行后面的
        QEventLoop eventLoop;
        connect(m_pHttpMgr, &QNetworkAccessManager::finished, this, &MainWindow::LoginFinished);

  1. application/json。

示例1:

QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
        QNetworkRequest requestInfo;
        requestInfo.setUrl(QUrl("https://xxxxxxx"));
        requestInfo.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
        QJsonObject json;
        json.insert("参数名1", "参数值1");
        json.insert("参数名2", "参数值2");
        json.insert("参数名3", "参数值3");
        QJsonDocument document;
        document.setObject(json);
        QNetworkReply *reply = m_pHttpMgr->post(requestInfo, document.toJson());
        connect(m_pHttpMgr, &QNetworkAccessManager::finished, this, &MainWindow::LoginFinished);

  1. multipart/form-data

示例1:

    QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager(); 
    QNetworkRequest request;
    request.setUrl(QUrl("https://xxxxxxx"));
    request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
    QJsonObject json;
    json.insert("参数名1", "参数值1");
    json.insert("参数名2", "参数值2");
    json.insert("参数名3", "参数值3");
    QJsonDocument document;
    document.setObject(json);
    QNetworkReply* reply = m_pHttpMgr->post(request,document.toJson());
    connect(m_pHttpMgr,&QNetworkAccessManager::finished,this,&MainWindow::GetTeaResList_Finished);

示例2:

 //读取文件数据
     QFileInfo upload_file_info(filePath);
     QFile *file = new QFile(filePath);
     file->open(QIODevice::ReadOnly);
     QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart ::FormDataType);
     //参数1
     QHttpPart formdata_userid;
     formdata_userid.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("form-data; name=\"userid\""));
     formdata_userid.setBody("11584");
     //文件数据
     QHttpPart filePart;
     filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/octet-stream"));
     filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"" + upload_file_info.fileName() + "\""));
     filePart.setBodyDevice(file);
     file->setParent(multiPart); //delte file with the multiPart
     //填充参数
     multiPart->append(formdata_userid);
     multiPart->append(filePart);
     QNetworkAccessManager *manager = new QNetworkAccessManager();
     QNetworkRequest request(QUrl(baseURL + ""));
     //request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
     QNetworkReply *reply = manager->post(request, multiPart);
     multiPart->setParent(reply);
     connect(manager, &QNetworkAccessManager::finished, this, &OBSAbout::UploadResLogic_Finished);

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值