本文使用QT发送一个媒体类型为application/json的post请求,步骤如下:
1.首先创建一个QNetworkAccessManager类,并设置url和请求参数
2.发送请求,发送之后会返回一个QNetworkReply对象的指针
3.调用connect函数创建一个信号槽,信号为QNetworkReply::finished,槽为我们自己的代码
main.cpp
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函数
#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();
});
}