欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Qt實現(xiàn)HTTP的Get/Post請求

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

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

頭文件

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

另外,使用Qt網(wǎng)絡模塊還需要引用Qt5Network.lib庫。

Get

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

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

QNetworkRequest提供了對本次網(wǎng)絡請求的封裝,在本示例中只是構(gòu)造了一個最簡單的requset,沒有進行任何參數(shù)設置。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);
}

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

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 {
?? ??? ?// 獲取返回內(nèi)容
?? ??? ?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());
}

同樣,請求也是異步的,當請求完成之后,會調(diào)用void requestFinished(QNetworkReply* reply);槽函數(shù)(和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 {
?? ??? ?// 獲取返回內(nèi)容
?? ??? ?qDebug() << reply->readAll();
?? ?}
}

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

相關(guān)文章

  • C++如何實現(xiàn)字符串的部分復制

    C++如何實現(xiàn)字符串的部分復制

    這篇文章主要介紹了C++如何實現(xiàn)字符串的部分復制問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言如何用順序棧實現(xiàn)回文序列判斷

    C語言如何用順序棧實現(xiàn)回文序列判斷

    這篇文章主要為大家介紹了C語言如何用順序棧來實現(xiàn)回文序列的判斷,文中含有詳細的代碼示例及分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • C++ string替換指定字符實例代碼

    C++ string替換指定字符實例代碼

    這篇文章主要給大家介紹了關(guān)于C++ string替換指定字符的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • 一文搞懂C++11萬能引用和右值引用

    一文搞懂C++11萬能引用和右值引用

    本文主要介紹了C++11萬能引用和右值引用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言輕松實現(xiàn)掃雷小游戲

    C語言輕松實現(xiàn)掃雷小游戲

    掃雷是一款經(jīng)典的小游戲,這篇文章主要為大家詳細介紹了C語言輕松實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 淺談c++11閉包的實現(xiàn)

    淺談c++11閉包的實現(xiàn)

    閉包有很多種定義,一種說法是,閉包是帶有上下文的函數(shù)。說白了,就是有狀態(tài)的函數(shù)。更直接一些,不就是個類嗎?換了個名字而已。本文將介紹c++11閉包的實現(xiàn),感興趣的同學,可以參考下。
    2021-06-06
  • C#委托所蘊含的函數(shù)指針概念詳細解析

    C#委托所蘊含的函數(shù)指針概念詳細解析

    C#中用委托這種概念實現(xiàn)了函數(shù)指針技術(shù)而已,另外.ent提供額外的安全性,當然也損失了靈活性
    2013-09-09
  • C/C++如何實現(xiàn)兩矩陣相乘之模擬法

    C/C++如何實現(xiàn)兩矩陣相乘之模擬法

    C++矩陣運算矩陣運算包括矩陣相加、相減、相乘、轉(zhuǎn)置、求逆矩陣等等,用計算機程序?qū)崿F(xiàn)矩陣運算的方法算法很多,這篇文章主要給大家介紹了關(guān)于C/C++如何實現(xiàn)兩矩陣相乘之模擬法的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C語言自定義軍旗游戲源碼

    C語言自定義軍旗游戲源碼

    這篇文章主要為大家詳細介紹了C語言自定義軍旗游戲源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C/C++產(chǎn)生隨機數(shù)函數(shù)簡單介紹

    C/C++產(chǎn)生隨機數(shù)函數(shù)簡單介紹

    這篇文章主要為大家詳細介紹了C/C++產(chǎn)生隨機數(shù)函數(shù)的實現(xiàn)方法,如何使用C/C++產(chǎn)生隨機數(shù)函數(shù),感興趣的小伙伴們可以參考一下
    2016-04-04

最新評論