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

淺談Qt實現HTTP的Get/Post請求

 更新時間:2022年05月12日 16:04:50   作者:china_jeffery  
本文主要介紹了淺談Qt實現HTTP的Get/Post請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

借助Qt的NetWork模塊,可以輕松的實現HTTP的Get/Post請求,而不需要再次引用像libcurl這樣的第三方庫。
當然,Qt的NetWork模塊提供的功能遠遠不只是HTTP方面的。

頭文件

#include <QNetworkRequest>
#include <QNetworkReply>
#include <QNetworkAccessManager>

另外,使用Qt網絡模塊還需要引用Qt5Network.lib庫。

Get

先構造一個QNetworkAccessManager對象,QNetworkAccessManager對象提供了發(fā)送QNetworkRequest網絡請求和接收QNetworkReply網絡回復的功能。

QNetworkAccessManager還提供了緩存和Cookie管理、代理設置等功能。詳見:https://doc.qt.io/qt-5/qnetworkaccessmanager.html

QNetworkRequest提供了對本次網絡請求的封裝,在本示例中只是構造了一個最簡單的requset,沒有進行任何參數設置。QNetworkRequest提供了很多方法來對請求進行配置,比如我們可以使用QNetworkRequest::setHeader設置請求頭等。詳見:https://doc.qt.io/qt-5/qnetworkrequest.html

void QtGuiApplication::onBtnGetClicked() {
?? ?QNetworkRequest request;
?? ?QNetworkAccessManager* naManager = new QNetworkAccessManager(this);
?? ?QMetaObject::Connection connRet = QObject::connect(naManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));
?? ?Q_ASSERT(connRet);

?? ?request.setUrl(QUrl("https://www.baidu.com"));
?? ?QNetworkReply* reply = naManager->get(request);
}

請求是異步的,當請求完成之后,會調用void requestFinished(QNetworkReply* reply);槽函數:

void QtGuiApplication::requestFinished(QNetworkReply* reply) {
?? ?// 獲取http狀態(tài)碼
?? ?QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
?? ?if(statusCode.isValid())
?? ??? ?qDebug() << "status code=" << statusCode.toInt();

?? ?QVariant reason = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
?? ?if(reason.isValid())
?? ??? ?qDebug() << "reason=" << reason.toString();

?? ?QNetworkReply::NetworkError err = reply->error();
?? ?if(err != QNetworkReply::NoError) {
?? ??? ?qDebug() << "Failed: " << reply->errorString();
?? ?}
?? ?else {
?? ??? ?// 獲取返回內容
?? ??? ?qDebug() << reply->readAll();
?? ?}
}

Post

void QtGuiApplication::onBtnPushClicked() {
?? ?QNetworkRequest request;
?? ?QNetworkAccessManager* naManager = new QNetworkAccessManager(this);
?? ?QMetaObject::Connection connRet = QObject::connect(naManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));
?? ?Q_ASSERT(connRet);

?? ?request.setUrl(QUrl("https://www.baidu.com"));
?? ?
?? ?QString testData = "test";
?? ?QNetworkReply* reply = naManager->post(request, testData.toUtf8());
}

同樣,請求也是異步的,當請求完成之后,會調用void requestFinished(QNetworkReply* reply);槽函數(和Get一樣):

void QtGuiApplication::requestFinished(QNetworkReply* reply) {
?? ?// 獲取http狀態(tài)碼
?? ?QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
?? ?if(statusCode.isValid())
?? ??? ?qDebug() << "status code=" << statusCode.toInt();

?? ?QVariant reason = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
?? ?if(reason.isValid())
?? ??? ?qDebug() << "reason=" << reason.toString();

?? ?QNetworkReply::NetworkError err = reply->error();
?? ?if(err != QNetworkReply::NoError) {
?? ??? ?qDebug() << "Failed: " << reply->errorString();
?? ?}
?? ?else {
?? ??? ?// 獲取返回內容
?? ??? ?qDebug() << reply->readAll();
?? ?}
}

到此這篇關于淺談Qt實現HTTP的Get/Post請求的文章就介紹到這了,更多相關Qt HTTP Get/Post請求內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++的多態(tài)和虛函數你真的了解嗎

    C++的多態(tài)和虛函數你真的了解嗎

    這篇文章主要為大家詳細介紹了C++的多態(tài)和虛函數,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 如何使用VC庫函數中的快速排序函數

    如何使用VC庫函數中的快速排序函數

    下面呢,小編就為大家介紹一下VC中庫函數qsort()的用法。需要的朋友可以過來參考下
    2013-09-09
  • C語言打印某一年中某月的日歷

    C語言打印某一年中某月的日歷

    本文詳細講解了C語言打印某一年中某月的日歷,文中通過示例代碼介紹的非常詳細。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • C++基于EasyX框架實現飛機大戰(zhàn)小游戲

    C++基于EasyX框架實現飛機大戰(zhàn)小游戲

    EasyX是針對C/C++的圖形庫,可以幫助使用C/C++語言的程序員快速上手圖形和游戲編程。本文將利用EasyX框架實現飛機大戰(zhàn)小游戲,需要的可以參考一下
    2023-01-01
  • VC實現獲取本機MAC地址的方法

    VC實現獲取本機MAC地址的方法

    這篇文章主要介紹了VC實現獲取本機MAC地址的方法,需要的朋友可以參考下
    2014-07-07
  • C++ OpenCV實戰(zhàn)之文檔照片轉換成掃描文件

    C++ OpenCV實戰(zhàn)之文檔照片轉換成掃描文件

    這篇文章主要為大家介紹一個C++?OpenCV的實戰(zhàn)——文檔照片轉換成掃描文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-09-09
  • c++11 多線程編程——如何實現線程安全隊列

    c++11 多線程編程——如何實現線程安全隊列

    這篇文章主要介紹了c++ 如何實現線程安全隊列,幫助大家更好的理解和學習c++的相關知識,感興趣的朋友可以了解下
    2020-11-11
  • C語言 常量,變量及數據詳細介紹

    C語言 常量,變量及數據詳細介紹

    這篇文章主要介紹了C語言 常量,變量及數據詳解的相關資料,需要的朋友可以參考下
    2016-10-10
  • VisualStudio2022配置opencv的實現

    VisualStudio2022配置opencv的實現

    本文主要介紹了VisualStudio2022配置opencv的實現,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • C++實現OpenCV方框濾波的代碼

    C++實現OpenCV方框濾波的代碼

    這篇文章主要介紹了C++ OpenCV方框濾波的實現,方框濾波是均值濾波的一種形式,今天通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-10-10

最新評論

嘉峪关市| 潢川县| 金塔县| 连江县| 郯城县| 准格尔旗| 彩票| 岳阳市| 蓝山县| 广河县| 高淳县| 黄骅市| 龙井市| 扎兰屯市| 北京市| 鄢陵县| 法库县| 清徐县| 池州市| 衡山县| 乌兰浩特市| 阿克| 东山县| 循化| 鹰潭市| 沿河| 蕲春县| 宁乡县| 宽城| 康定县| 望江县| 和平县| 汉源县| 林西县| 嫩江县| 集安市| 连平县| 惠来县| 电白县| 古田县| 长子县|