IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> QT 构造JSON格式发送数据 -> 正文阅读

[开发测试]QT 构造JSON格式发送数据

? ? ? ? 由于项目要求向服务器平台提供的api接口发送特定格式的json数据,本地客户端处理后向其发送,首先是用postman模拟了一下上传的效果,以及查看返回的状态码判断上传是否成功。

//json格式示例
[
    {
		"device_id": "CJ02A-2110051",
		 "sensorArray": [50,60],
		"upload_time": "2021-12-07 17:00:00"
    }
]

?????????从结构上判断主要是{}数组[ ]里面包含了1个object对象{ },然后这个object对象里包含了3个

参数,参数里“sensorArray”也是一个数组。代码如下:

    QString device_id = "CJ02A-2110051";
    QString upload_time = "2021-12-12 20:00:00";
    float Temperature = 15.30;
    float Humidity = 70.34;
    QJsonArray TH;
    TH.append(Temperature);
    TH.append(Humidity);

    QJsonObject json;//构建json对象json
    json.insert("device_id", device_id);
    json.insert("sensorArray",QJsonValue(TH));
    json.insert("upload_time", upload_time);

    QJsonArray JSON;
    JSON.append(QJsonValue(json));



    QJsonDocument document;
    document.setArray(JSON);
    QByteArray byte_array = document.toJson(QJsonDocument::Indented);//Compact
    QString json_str(byte_array);
    ui->textEdit_3->setText(json_str);
    //http请求
    QNetworkRequest request1;
    QNetworkAccessManager* naManager = new QNetworkAccessManager(this);
    QMetaObject::Connection connRet = QObject::connect(naManager,SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));
    Q_ASSERT(connRet);

    request1.setUrl(QUrl("http://iot.joinken.cn/nyy/admin/hd/hd_device/analogDeviceData"));


    request1.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
    QString token= "Bearer eyJhbGciOiJIUzUxMiJ8";
    QString token_headerData = token;
    request1.setRawHeader("Authorization",token_headerData.toLocal8Bit());
    QNetworkReply* reply = naManager->post(request1, byte_array);

?这里的函数主要是用来返回状态码查看上传情况。

void MainWindow::requestFinished(QNetworkReply* reply) {
    // 获取http状态码
    QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
    if(statusCode.isValid())
        qDebug() << "status code=" << statusCode.toInt();

    QVariant reason = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
    if(reason.isValid())
        qDebug() << "reason=" << reason.toString();

    QNetworkReply::NetworkError err = reply->error();
    if(err != QNetworkReply::NoError) {
        qDebug() << "Failed: " << reply->errorString();
    }
    else {
        // 获取返回内容
        qDebug() << QString::fromLocal8Bit(reply->readAll());
    }
}

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 16:15:41  更:2021-12-14 16:15:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 6:38:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码