QNetworkRequest 用于请求的主体及配置
QNetworkAccessManager 用于发送请求,创建网络响应
QNetworkReply 用于接收到的数据主体
1、在.pro文件中添加:QT += network
2、mainwindow.cpp
# mianwindow.h
QString l1 = ui->lineEdit_ObjectLength->text().toUtf8();
QString w1 = ui->lineEdit_ObjectWidth->text().toUtf8();
QString h1 = ui->lineEdit_ObjectHeight->text().toUtf8();
QString ev1 = ui->lineEdit_ObjectExternalVolume->text().toUtf8();
QString iv1 = ui->lineEdit_ObjectIntegralVolume->text().toUtf8();
QNetworkAccessManager * net_mgr = new QNetworkAccessManager(this);
connect(net_mgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlot(QNetworkReply*)));
qDebug() << "--------------------hahahhaha";
QNetworkRequest net_request;
net_request.setUrl(QUrl("http:httpbin.org/post"));
//要发送json格式的数据必须要在header里设置,不然不会成功的
net_request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
QJsonObject object;
object.insert("Length", l1);
object.insert("Width", w1);
object.insert("Height", h1);
object.insert("ExternalVolume", ev1);
object.insert("IntegralVolume", iv1);
QJsonDocument document = QJsonDocument(object);
//这里要将json格式的数据转换为QByteArray才行
QByteArray post_data = document.toJson(QJsonDocument::Compact);
net_mgr->post(net_request, post_data);
qDebug() << "--------------------mmmmmmmmmm";
...
void MainWindow::finishedSlot(QNetworkReply* reply)
{
if (reply->error() == QNetworkReply::NoError)
{
QByteArray bytes = reply->readAll();
// 下边我们将收到的body部分解析为json格式,其中有个key是status
QJsonDocument jsonDocument = QJsonDocument::fromJson(bytes);
QJsonObject jsonObject = jsonDocument.object();
QString value = jsonObject.value("data").toString();
qDebug() << "----------------------------" + value;
}
reply->deleteLater();
}
注:基于网上开源服务器http:httpbin.org/post
3、maindow.h
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
...
private slots:
void finishedSlot(QNetworkReply*);