03 QT escribe cliente HTTP

QT escribe cliente HTTP

1. Clases relacionadas

● QNetworkAccessManager 【Enviar solicitud de red y recibir respuesta】
● QNetworkReply 【Respuesta de servicio】
● QNetworkRequest 【Solicitud de servicio】
● QUrl
Nota: para usar estas clases, debe agregar el módulo de red al archivo de perfil. QT += red

2.Cliente HTTP

#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/")));
}

Supongo que te gusta

Origin blog.csdn.net/pointerz_zyz/article/details/128855623
Recomendado
Clasificación