【QT-7】Qt HTTP方式主动推送数据

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*);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值