本文使用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();
    });
}
01-12 17:49