最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt使用HTTP上傳json格式數(shù)據(jù)

 更新時間:2024年12月27日 10:01:19   作者:小灰灰搞電子  
這篇文章主要為大家詳細(xì)介紹了Qt如何使用HTTP上傳json格式數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考一下

話不多說,直接上源碼

httpHelper.h

#ifndef HTTPHELPER_H
#define HTTPHELPER_H

#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QJsonParseError>
#include <QJsonObject>
#include <QTime>
#include <QEventLoop>
#include <QMutex>
#include <QMap>
#include <QHttpMultiPart>
#include <QUrlQuery>

class HttpHelper : public QObject
{
    Q_OBJECT
public:
    explicit HttpHelper(QObject *parent = nullptr);
    ~HttpHelper();

    void uploadSyncVertifyInfoSlot(QString url,const QMap<QString,QString> body,QString value);
private:
    QNetworkAccessManager *networkAccessManager;
};

#endif // HTTPHELPER_H

httpHelper.cpp

HttpHelper::HttpHelper(QObject *parent)
    : QObject{parent}
{
    this->networkAccessManager = new QNetworkAccessManager(this);
}
HttpHelper::~HttpHelper()
{
    if(this->networkAccessManager)
    {
        this->networkAccessManager->clearAccessCache();
        this->networkAccessManager->destroyed();
        delete this->networkAccessManager;
    }
}
void HttpHelper::uploadSyncVertifyInfoSlot(QString url, const QMap<QString, QString> body, QString value)
{
    this->networkAccessManager->setTransferTimeout(2000);

    //發(fā)送異步get請求
    QNetworkRequest request;


    request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
    request.setHeader(QNetworkRequest::ContentLengthHeader, value.toUtf8().size());
    for(QMap<QString,QString>::ConstIterator it = body.begin();it != body.end();it++)
    {
        request.setRawHeader(it.key().toUtf8(),it.value().toUtf8());
    }
    request.setUrl(QUrl(url));
    //qDebug()<<request.url().toString();

    QNetworkReply *reply = this->networkAccessManager->post(request,value.toUtf8());

    connect(reply, &QNetworkReply::finished,
            [=]()
            {
                if(reply->error()!=QNetworkReply::NoError)
                {
                    //處理中的錯誤信息
                    qWarning()<<"upload reply error:"<<reply->error();
                    qDebug()<<"upload reply error string:"<<reply->errorString();
                    qDebug()<<"upload status code:"<<reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
                    if(reply->isOpen())
                        qDebug()<<"upload response content:"<<reply->readAll();
                }
                else
                {
                    //獲取響應(yīng)信息
                    QByteArray replyData = reply->readAll();
                    qDebug()<<"upload reply:"<<replyData;
                }
                reply->deleteLater();
            });
}

具體使用方法

//上次數(shù)據(jù)
QJsonObject jsonObj;
jsonObj["letter_id"] = letterId;
jsonObj["courier_number"] = courierNumber;
jsonObj["attachment"] = attachment;
jsonObj["load_start_time"] = dateTime;
jsonObj["verify_finished_time"] = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
jsonObj["verify_result"] = verifyRes?"Success":"Failed";
jsonObj["batch_no"] = TaskManage::getRunningTask().taskName;

// 將JSON對象包裝成一個QJsonDocument
QJsonDocument jsonDoc(jsonObj);

// 將JSON文檔轉(zhuǎn)換為字符串
QString jsonString = jsonDoc.toJson(QJsonDocument::Compact);

QString url = R"(https://xxxxxxxxxx)";

QMap<QString,QString> contentMap;
contentMap["Authorization"] = QString("Bearer ").append(token);
this->httpHelper->uploadSyncVertifyInfo(url,contentMap,jsonString);

到此這篇關(guān)于Qt使用HTTP上傳json格式數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Qt HTTP上傳json內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++之異常處理詳解

    C++之異常處理詳解

    C++中處理異常的過程是這樣的:在執(zhí)行程序發(fā)生異常,可以不在本函數(shù)中處理,而是拋出一個錯誤信息,把它傳遞給上一級的函數(shù)來解決,上一級解決不了,再傳給其上一級,由其上一級處理
    2013-08-08
  • VS Code C/C++環(huán)境配置教程(無法打開源文件“xxxxxx.h”或者檢測到 #include 錯誤,請更新includePath)(POSIX API)

    VS Code C/C++環(huán)境配置教程(無法打開源文件“xxxxxx.h”或者檢測到 #include 錯誤,請更新in

    這篇文章主要介紹了VS Code C/C++環(huán)境配置教程(無法打開源文件“xxxxxx.h” 或者 檢測到 #include 錯誤。請更新includePath) (POSIX API),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • C++編程語言中賦值運(yùn)算符重載函數(shù)(operator=)的使用

    C++編程語言中賦值運(yùn)算符重載函數(shù)(operator=)的使用

    本文主要介紹了C++編程語言中賦值運(yùn)算符重載函數(shù)(operator=)介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C++中this指針用法詳解及實(shí)例

    C++中this指針用法詳解及實(shí)例

    這篇文章主要介紹了C++中this指針用法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 基于C++制作一個簡單的跑酷游戲

    基于C++制作一個簡單的跑酷游戲

    這篇文章主要為大家詳細(xì)介紹了如何利用C++制作一個簡單的跑酷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-06-06
  • C++實(shí)現(xiàn)航空訂票程序

    C++實(shí)現(xiàn)航空訂票程序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)航空訂票程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++結(jié)合OpenCV實(shí)現(xiàn)RRT算法(路徑規(guī)劃算法)

    C++結(jié)合OpenCV實(shí)現(xiàn)RRT算法(路徑規(guī)劃算法)

    這篇文章主要介紹了C++結(jié)合OpenCV實(shí)現(xiàn)RRT算法,RRT算法整體框架主要分為rand、near、new三點(diǎn)的建立和near與new之間的安全性檢查,需要的朋友可以參考下
    2022-05-05
  • C++多線程編程超詳解

    C++多線程編程超詳解

    本文給大家介紹的是C++多線程編程,由于C++本身沒有多線程機(jī)制,在windows下我們使用調(diào)用SDK win32 api來實(shí)現(xiàn),示例都很簡單,講解的也很詳細(xì),推薦給大家
    2021-09-09
  • C語言掃雷游戲的實(shí)現(xiàn)方法

    C語言掃雷游戲的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了C語言掃雷游戲的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++編寫非侵入式接口

    C++編寫非侵入式接口

    這篇文章主要介紹了C++編寫非侵入式接口的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評論

晋中市| 亚东县| 满洲里市| 凤冈县| 河北区| 农安县| 莱西市| 栾川县| 尤溪县| 海林市| 同德县| 民乐县| 荥经县| 奈曼旗| 万山特区| 灌阳县| 宜阳县| 汾西县| 桂东县| 太仆寺旗| 东乡族自治县| 德昌县| 北票市| 潍坊市| 鹤山市| 西贡区| 抚远县| 温州市| 大英县| 都安| 肇州县| 措美县| 吴堡县| 阿拉善右旗| 图木舒克市| 乌苏市| 陕西省| 松阳县| 榆树市| 泸溪县| 英山县|