注意,如果想使用本文相关的类,需要在项目的.pro
文件加入网络模块,也就是需要加入下面一行代码
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
QT += network # <-----注意,这行是新加的,加了这行代码,才能使用本文的类
CONFIG += c++17
本文使用QT发送一个媒体类型为application/json的post请求,步骤如下:
1.首先创建一个QNetworkAccessManager类,并设置url和请求参数
2.发送请求,发送之后会返回一个QNetworkReply对象的指针
3.调用connect函数创建一个信号槽,信号为QNetworkReply::finished,槽为我们自己的代码
main.cpp文章来源:https://www.toymoban.com/news/detail-787095.html
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
// w.show(); 本文仅用于演示在QT Creator中发送http post,所以不显示GUI界面
return a.exec();
}
mainwindows.cpp 在mainwindows.cpp中写发送的代码主要是为了使用connect函数文章来源地址https://www.toymoban.com/news/detail-787095.html
#include <QDebug>
#include <QComboBox>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QtNetwork>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
// ui->setupUi(this);本文仅用于演示在QT Creator中发送http post,所以不显示GUI界面
// 创建QNetworkAccessManager类,并设置url和请求参数
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QUrl url("http://localhost:8080/test/bb");
QNetworkRequest request(url);
request.setRawHeader("Content-Type", "application/json");
QByteArray postData;
postData.append("{\"descript\": \"我爱武汉汉阳的妹子\"}");
// 发送请求,发送之后会返回一个QNetworkReply对象的指针
QNetworkReply *reply = manager->post(request, postData);
// 调用connect函数创建一个信号槽,自己设置回调函数
connect(reply, &QNetworkReply::finished, this, [=]() {
if (reply->error() == QNetworkReply::NoError) {
QByteArray data = reply->readAll();
qDebug()<<data;
} else {
qDebug()<<"处理错误";
}
reply->deleteLater();
});
}
到了这里,关于QT-发送HTTP请求/QNetworkAccessManager的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!