Qt使用HTTP上傳json格式數(shù)據(jù)
更新時間:2024年12月27日 10:01:19 作者:小灰灰搞電子
這篇文章主要為大家詳細介紹了Qt如何使用HTTP上傳json格式數(shù)據(jù),文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下
話不多說,直接上源碼
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++回調(diào)函數(shù)實現(xiàn)計算器和qsort
這篇文章主要介紹了C++回調(diào)函數(shù)實現(xiàn)計算器和qsort,回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)2022-08-08
OpenCV使用稀疏光流實現(xiàn)視頻對象跟蹤的方法詳解
這篇文章主要為大家詳細介紹了OpenCV如何使用稀疏光流實現(xiàn)視頻對象跟蹤功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-02-02
Qt6遠程連接MySQL數(shù)據(jù)庫的簡單易上手版
在Qt應(yīng)用程序里,可實現(xiàn)遠程MySQL服務(wù)器的連接操作,本文就來介紹一下Qt6遠程連接MySQL數(shù)據(jù)庫,具有一定的參考價值,感興趣的可以了解一下2023-11-11
通過c++的sort函數(shù)實現(xiàn)成績排序功能
這篇文章主要介紹了通過c++的sort函數(shù)實現(xiàn)成績排序,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02

