国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(Qt) Http之Get請求使用基礎

這篇具有很好參考價值的文章主要介紹了(Qt) Http之Get請求使用基礎。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

http的操作是網(wǎng)絡通信中非常常見的操作,其中廣泛使用get,post兩種操作。

本文將對Qt中,http的get請求做簡單應用,來進行展示。

Code

完整code

#include <QApplication>
#include <QDebug>
#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkReply>

namespace {

/**
 * @brief receive_getReply
 * @param reply
 * 處理回答
 */
void receive_getReply(QNetworkReply *reply) {
    if (nullptr == reply) {
        qDebug() << "reply nullptr";
        return;
    }

    /// 等待結束后再read
    QObject::connect(reply, &QNetworkReply::finished, [reply]() {
        /// read data
        QByteArray byte = reply->readAll();
        // reply->disconnect();
        /// delete pointer
        reply->deleteLater();

        /// data to json
        QJsonDocument jsonDocument = QJsonDocument::fromJson(byte.data());

        /// process data
        /// can emit in class::QObject
        qDebug() << jsonDocument;
    });
}

/**
 * @brief request_get
 * @param url
 * 查詢,get請求
 * 注意,下方的QNetworkAccessManager 是靜態(tài)對象
 */
void request_get(const QUrl &url) {
    static QNetworkAccessManager manager;
    QNetworkRequest request(url);
    QNetworkReply *reply = manager.get(request);
    receive_getReply(reply);

    // QEventLoop loop;
    /// [1]
    // QObject::connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
    /// [2]
    // QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    // loop.exec();
}

/**
 * @brief test_network
 * 測試fun
 */
void test_network() {
    /// 天氣預報查詢api
    /// 首尾不要用空格
    QString url = R"(http://api.k780.com:88/?app=weather.future
                    &appkey=10003
                    &sign=b59bc3ef6191eb9f747dd4e83c99f2a4
                    &format=json
                    &weaid=蘇州)";
    request_get(QUrl(url));
}

}  // namespace

/**
 * @brief main
 * @param argc
 * @param argv
 * @return
 */
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    test_network();

    return app.exec();
}

效果

這里不做排版了,不然篇幅過大

(Qt) Http之Get請求使用基礎,Qt,qt,http,開發(fā)語言,c++,網(wǎng)絡協(xié)議

循環(huán)loop的使用

  • [1]

    QNetworkAccessManager 對于每個 reply 的 finish 都會發(fā)送 finished 的信號。

    如果一個 manager 處理多個請求可能會出現(xiàn)先后結束的問題。

  • [2]

    針對每個 reply 自身的聲明周期進行connect

    注意,不要讓這個 reply 解出 connect 就是調(diào)用reply->disconnect(); 否則可能會有部分的connect失效。或者保證運行的最后一個去取消。

void request_get(const QUrl &url) {
    /// 注意是static
    static QNetworkAccessManager manager;
    QNetworkRequest request(url);
    QNetworkReply *reply = manager.get(request);
    receive_getReply(reply);
	
    /// 設置死循環(huán),直到請求結束
    QEventLoop loop;
    /// [1]
    QObject::connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
    /// [2]
    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    loop.exec();
}

講解

配置

.pro

QT += network

header

#include <QNetworkAccessManager>
#include <QNetworkReply>

相關對象

  • QNetworkAccessManager
    • 這是網(wǎng)絡操作的管理者
    • 若本對象消亡了,則他管理的所有網(wǎng)絡操作均會失效
  • QNetworkRequest
    • 網(wǎng)絡請求的對象,用于接收url
    • 當獲得 reply 后,當前對象可以銷毀,因為這只是 manager 的一個參數(shù)
  • QNetworkReply
    • 進行get或者post請求后的實體
    • 這個實體會異步的進行數(shù)據(jù)的接收
    • 注意這個實體需要手動銷毀

Https

若請求https協(xié)議,則可能會出現(xiàn)以下問題。

這不是Qt本身的問題,因為沒有對應的ssl環(huán)境,當配置好后則可以正常運行。

此處不演示,請咨詢查找。文章來源地址http://www.zghlxwxcb.cn/news/detail-524788.html

qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed



END

到了這里,關于(Qt) Http之Get請求使用基礎的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • qt使用http get和post

    qt使用http get和post

    準備 使用到網(wǎng)絡編程,需要在Pro文件中加入如下語句 get請求 widge.h widget.cpp post請求 widge.h widget.cpp post請求的數(shù)據(jù)格式 參數(shù)寫在url后面 跟get一樣,dataArray為空即可 http://127.0.0.1:18080/define/login?userId=1password=123 對應的后端接口 使用application/x-www-form-urlencoded form表單數(shù)據(jù)被編碼為

    2024年02月08日
    瀏覽(30)
  • 使用QT實現(xiàn)http里面的get和post

    使用QT實現(xiàn)http里面的get和post

    #1024程序員節(jié)|參與投稿,贏限定勛章和專屬大獎# #假如你有一臺服務器,你最想做哪些事?# #你被什么樣的BUG困擾過一周以上?# 在http里面下面這些方法和服務器的響應代碼一起用于HTTP協(xié)議中的請求和響應交互。請注意,這些函數(shù)不是由編程語言實現(xiàn)的,而是由HTTP協(xié)議規(guī)定

    2024年02月07日
    瀏覽(26)
  • 【QT HTTP】使用QtNetwork模塊制作基于HTTP請求的C/S架構

    【QT HTTP】使用QtNetwork模塊制作基于HTTP請求的C/S架構

    ???♂? 作者:海碼007 ?? 專欄:C++專欄 ?? 標題:【QT HTTP】使用QtNetwork模塊制作基于HTTP請求的C/S架構 ?? 寄語:書到用時方恨少,事非經(jīng)過不知難。 ?? 最后: 文章作者技術和水平有限,如果文中出現(xiàn)錯誤,希望大家能指正! 最近項目涉及到網(wǎng)絡HTTP相關內(nèi)容,需要處

    2024年02月03日
    瀏覽(26)
  • Qt 使用HTTP請求網(wǎng)絡API并接收返回的JSON格式的數(shù)據(jù)

    引入網(wǎng)絡模塊: mainwindow.h: mainwindow.cpp:

    2024年02月13日
    瀏覽(20)
  • QT之Http請求

    今天我們介紹一下QT的http請求,這里有post和get兩種方式 一、post請求方式:參數(shù)分為網(wǎng)址和具體請求值兩個部分,有時候還需要設置頭信息,看具體情況定 二、get請求方式:參數(shù)和網(wǎng)址拼接到一起請求 三、主要區(qū)別: get用于請求獲取數(shù)據(jù),post向指定的資源創(chuàng)建修改數(shù)據(jù) g

    2024年02月15日
    瀏覽(23)
  • C語言的http post和get請求

    1)頭文件代碼如下: 2)源文件代碼如下: 3)相關的CMakeLists.txt文件如下: 4)post請求,測試主函數(shù)代碼如下: 5)生成目標文件后,輸入終端命令,post請求格式如下: 注意:命令行需要輸入兩個參數(shù) url和post_str 6)post請求測試結果如下: get請求,主函數(shù)代碼如下: 8)編譯

    2024年02月14日
    瀏覽(20)
  • QT-發(fā)送HTTP請求/QNetworkAccessManager

    注意,如果想使用本文相關的類,需要在項目的 .pro 文件加入網(wǎng)絡模塊,也就是需要加入下面一行代碼 本文使用QT發(fā)送一個媒體類型為application/json的post請求,步驟如下: 1.首先創(chuàng)建一個QNetworkAccessManager類,并設置url和請求參數(shù) 2.發(fā)送請求,發(fā)送之后會返回一個QNetworkReply對象

    2024年02月02日
    瀏覽(17)
  • Qt+QtWebApp開發(fā)筆記(三):http服務器動態(tài)html連接跳轉基礎交互

    Qt+QtWebApp開發(fā)筆記(三):http服務器動態(tài)html連接跳轉基礎交互

    ??網(wǎng)頁很多時候是動態(tài)的,于是本篇文章目標實現(xiàn)一個簡答的動態(tài)頁面—頁靜態(tài)頁面互相跳轉,點擊可以跳轉到子頁面。 ? ?? ??鏈接:https://pan.baidu.com/s/1bbhcu1XTiaJRYGRQRG5a0g?pwd=1234 ? ??上一篇的“Hello World”應用程序確實輸出了簡單的純文本。但網(wǎng)絡的語言是HTML。因

    2024年02月06日
    瀏覽(34)
  • 基礎知識:HTTP協(xié)議以及GET請求和POST請求的區(qū)別

    基礎知識:HTTP協(xié)議以及GET請求和POST請求的區(qū)別

    qq對于HTTP協(xié)議,做Web編程的開發(fā)人員再熟悉不過了。? 不論是前端Html頁面通過Ajax還是客戶端通過?HttpClient?又或服務端與服務端之間的Rest請求,這都需要通過Http協(xié)議完成請求? 。在HTTP協(xié)議中,我們最常用的是GET和POST請求,對于這兩個方法,應該是最基礎的東西。但是,兩

    2024年02月08日
    瀏覽(29)
  • 【SpringBoot教程】SpringBoot開發(fā)HTTP接口GET請求實戰(zhàn)

    【SpringBoot教程】SpringBoot開發(fā)HTTP接口GET請求實戰(zhàn)

    ? 專欄地址 系列教程更新中 ?? 專欄介紹: 本專欄為SpringBoot+Spring+Mybatis的系列零基礎教程,從框架的基礎知識講起,從0開始實現(xiàn)一個在線教育實戰(zhàn)項目 ?? 源碼獲取 : 項目中的資料可以通過文章底部公眾號聯(lián)系我獲取,或者+V 【yopa66】備注SSM 1.快速創(chuàng)建一個SpringBoot項目 項

    2024年02月01日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包