03 QT writes HTTP client

QT writes HTTP client

1. Related classes

● QNetworkAccessManager 【Send network request and receive response】
● QNetworkReply 【Service response】
● QNetworkRequest 【Service request】
● QUrl
Note: To use these classes, you need to add the network module to the pro file. QT += network

2.HTTP client

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

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    //构建一个manager对象
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);

    //manager具有异步API,当http请求完成后,会通过finished信号进行通知
    connect(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply) {
    
    
        if(reply->error()!=QNetworkReply::NoError) {
    
    
            //处理中的错误信息
            qDebug()<<"reply error:"<<reply->errorString();
        }
        else {
    
    
            //请求方式
            qDebug()<<"operation:"<<reply->operation();
            //状态码
            qDebug()<<"status code:"<<reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
            qDebug()<<"url:"<<reply->url();

            //获取响应信息
            const QByteArray reply_data=reply->readAll();
            qDebug()<<"read all:"<<QString(reply_data).toUtf8();
        }

        reply->deleteLater();
    });

    //发送异步get请求
    manager->get(QNetworkRequest(QUrl("https://www.baidu.com/")));
}

Guess you like

Origin blog.csdn.net/pointerz_zyz/article/details/128855623