本文使用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();});
}