在剛接觸QT時(shí)第一個(gè)任務(wù)就是進(jìn)行http請(qǐng)求,現(xiàn)在才開(kāi)始記錄,可能會(huì)有遺漏的點(diǎn)。
一、post請(qǐng)求
在.pro文件中
QT += network
在.h文件中添加對(duì)應(yīng)的頭文件
#include <QWidget>
#include <QObject>
#include <QDebug>
#include <QHttpMultiPart>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QMetaObject>
#include <QEventLoop>
#include <QJsonDocument> //以下是json數(shù)據(jù)傳送所需頭文件
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
在.cpp中
/*
功能說(shuō)明:post請(qǐng)求
參數(shù)說(shuō)明:key - 加密的密鑰
data - 加密的參數(shù)
返 回:無(wú)
*/
void GaodePost::PostRequest(QString key,QString data)
{
QJsonObject dataobj; //構(gòu)建json對(duì)象dataobj
dataobj.insert("key",key);
dataobj.insert("data",data);
QJsonDocument document;
document.setObject(dataobj);
QByteArray byte_array = document.toJson(QJsonDocument::Compact); //類型轉(zhuǎn)換
//http請(qǐng)求
QNetworkRequest request1;
QNetworkAccessManager nam;
connect(&nam, &QNetworkAccessManager::finished, this, &GaodePost::receiveGaodePostReply);
request1.setUrl(QUrl("http://123.12.365.152/接口名")); //要請(qǐng)求的網(wǎng)址
//請(qǐng)求頭token設(shè)置
request1.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json;charset=utf-8"));
QString token = "xxxxxxxxxxxxxxxxxxxxxxxx";
QString token_headerData = token;
request1.setRawHeader("token",token_headerData.toLocal8Bit());
QNetworkReply* reply = nam.post(request1, byte_array); //post請(qǐng)求頭+傳輸?shù)臄?shù)據(jù)
//開(kāi)啟事件循環(huán),直到請(qǐng)求完成
QEventLoop loop;
connect(reply,&QNetworkReply::finished,&loop,&QEventLoop::quit);
loop.exec();
}
//接收請(qǐng)求返回的數(shù)據(jù)
QString GaodePost::receiveGaodePostReply(QNetworkReply *reply)
{
QString res = reply->readAll();
return res;
}
二、get請(qǐng)求文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-509215.html
.pro和.h文件和post請(qǐng)求一樣,在.cpp中文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-509215.html
//get請(qǐng)求
void GaodeGet::GetRequest()
{
QNetworkRequest request1;
QNetworkAccessManager nam;
connect(&nam, &QNetworkAccessManager::finished, this, &GaodeGet::receiveGaodeGetReply);
//get與post的請(qǐng)求方式有所不同,get是在接口名后添加 ? 和傳輸?shù)臄?shù)據(jù)(type)
request1.setUrl(QUrl("http://123.12.365.152/接口名?type"));
request1.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json;charset=utf-8"));
QString token = "xxxxxxxxxxxxxxxxxxxxxxxx";
QString token_headerData = token;
request1.setRawHeader("token",token_headerData.toLocal8Bit());
QNetworkReply *reply = nam.get(request1); //get請(qǐng)求頭
//開(kāi)啟事件循環(huán),直到請(qǐng)求完成
QEventLoop loop;
connect(reply,&QNetworkReply::finished,&loop,&QEventLoop::quit);
loop.exec();
}
//接收get請(qǐng)求返回的數(shù)據(jù)
void GaodeGet::receiveGaodeGetReply(QNetworkReply *reply)
{
QString res = reply->readAll();
qDebug() << "GaoDeWidget::receiveReply_get recive:" << res;
}
到了這里,關(guān)于QT進(jìn)行http請(qǐng)求(post/get)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!