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