QNetWork简单的get/post请求
1、VS新建Qt application项目
......
2、绘制ui界面

3、编码
3.1、头文件
1 #pragma once 2 3 #include <QtWidgets/QMainWindow> 4 #include <QNetworkAccessManager> 5 #include <QNetworkRequest> 6 #include <QNetworkReply> 7 #include "ui_QtGuiApplication1.h" 8 9 class QtGuiApplication1 : public QMainWindow 10 { 11 Q_OBJECT 12 13 public: 14 QtGuiApplication1(QWidget *parent = Q_NULLPTR); 15 QByteArray request(QString request_url); 16 QByteArray request(QString request_url, QByteArray &data); 17 public slots: 18 void getData(); 19 void postData(); 20 private: 21 Ui::QtGuiApplication1Class ui; 22 };
3.2、源文件
1 #include "QtGuiApplication1.h" 2 3 QtGuiApplication1::QtGuiApplication1(QWidget *parent) 4 : QMainWindow(parent) 5 { 6 ui.setupUi(this); 7 connect(ui.getButton, &QPushButton::clicked, this, &QtGuiApplication1::getData); 8 connect(ui.postButton, &QPushButton::clicked, this, &QtGuiApplication1::postData); 9 } 10 11 QByteArray QtGuiApplication1::request(QString request_url) 12 { 13 QNetworkAccessManager manager; 14 QNetworkReply *reply = manager.get(QNetworkRequest(request_url)); 15 16 /* 读取请求的数据 */ 17 QEventLoop loop; 18 connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit); 19 loop.exec(); 20 21 /* 读取请求的数据 */ 22 QByteArray recevied_data = reply->readAll(); 23 24 /* 释放 reply 内存, 否则会造成内存泄漏 */ 25 delete reply; 26 reply = nullptr; 27 28 return recevied_data; 29 } 30 31 QByteArray QtGuiApplication1::request(QString request_url, QByteArray &data) 32 { 33 34 QNetworkAccessManager manager; 35 36 /* 新的数据请求 */ 37 QNetworkRequest request(request_url); 38 //request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); 39 request.setRawHeader("Content-Type", "application/json");//服务器要求的数据头部 40 request.setRawHeader("Accept", "*/*");//服务器要求的数据头部 41 /* POST 请求 */ 42 QNetworkReply *preply = manager.post(request, data); 43 44 /* 等待返回请求结果 */ 45 QEventLoop loop; 46 connect(&manager, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit())); 47 loop.exec(); 48 49 /* 读取结果 */ 50 QByteArray result = preply->readAll(); 51 52 /* 释放 preply 内存, 否则造成内存泄漏 */ 53 delete preply; 54 preply = nullptr; 55 56 return result; 57 } 58 59 void QtGuiApplication1::getData() 60 { 61 QByteArray data = request("http://10.194.142.21:8080/user/selectAll"); 62 ui.getBrowser->setText(data); 63 } 64 65 void QtGuiApplication1::postData() 66 { 67 QByteArray body("{\"id\":12138,\"name\":\"qdl\"}"); 68 QByteArray data = request("http://10.194.142.21:8080/user/addUser", body); 69 ui.postBrowser->setText(data); 70 }
4、测试
代码中请求的地址是我自己写的restful接口,跑着本地。
4.1、你可以debug模式调试该程序


4.2、或者release删除exe成果物后配置依赖库后双击exe程序启动。

浙公网安备 33010602011771号