QT发送request请求

时间记录:2024/1/23

一、使用步骤

(1)pro文件中添加network模块
(2)创建QNetworkAccessManager网络管理类对象
(3)创建QNetworkRequest网络请求对象,使用setUrl方法设置请求url,使用setHeader方法设置已知的请求头,使用setRawHeader方法设置未知的请求头
(4)使用QNetworkAccessManagerget方法发送get请求,post方法发送post请求,返回QNetworkReply对象
(5)为QNetworkReply对象的finished信号绑定槽,请求发送完成后触发此信号,然后在槽函数中使用QNetworkReply对象的readAll方法获取请求返回的信息

二、QT中json数据的解析和生成json数据

(1)使用类QJsonDocumentQJsonObjectQJsonArrayQJsonValue
(2)普通json格式字符串转为json对象

QString json = "{\"name\":\"zhangsan\",\"value\":[{\"name\":\"lisi\",\"age\":18},{\"name\":\"wangwu\",\"age\":20}]}";
QJsonDocument document = QJsonDocument::fromJson(json.toLocal8Bit());

(3)json对象解析获取数据

QString json = "{\"name\":\"zhangsan\",\"value\":[{\"name\":\"lisi\",\"age\":18},{\"name\":\"wangwu\",\"age\":20}]}";
QJsonDocument document = QJsonDocument::fromJson(json.toLocal8Bit());
QJsonObject object = document.object();
QJsonValue value = object.value("name");//获取第一级json键为name的值
QString nameValue = value.toString();
int valueV = object.value("value").toArray().at(0).toObject().value("age").toInt();//获取第二级json键为age的值

(4)使用QJsonObject对象拼接json格式数据

QJsonObject object2;//创建2级json
object2.insert("name","lisi");
object2.insert("age",18);QJsonObject object3;//创建2级json
object3.insert("name","wangwu");
object3.insert("age",20);QJsonArray array;//创建json数组
array.insert(0,object2);
array.insert(1,object3);QJsonObject object1;//创建1级json
object1.insert("name","zhangsan");
object1.insert("array",array);//将拼接的json数组添加到1级jsonQJsonDocument document;
document.setObject(object1);
QByteArray json = document.toJson();//转换为json数据

三、QT中数据进行base64编码和解码

(1)编码,图片进行编码

    QFile file("D:\\file\\QT\\EveryTest\\Template\\1.jpg");file.open(QIODevice::ReadOnly);QByteArray imageData = file.readAll();file.close();QByteArray base64Data = imageData.toBase64();

(2)解码base64数据

	QByteArray decode = QByteArray::fromBase64(base64Data);QPixmap pixmap;pixmap.loadFromData(decode);

四、关于https接口的请求,需要添加ssl文件

(1)使用QSslSocket::sslLibraryBuildVersionString();查看当前QT使用的ssl版本
(2)windows平台,mingw套件编译,下载ssl,然后复制libcrypto-1_1-x64.dll和libssl-1_1-x64.dll文件到应用程序的同级目录下,发布应用程序时同样需要复制这两个文件
(3)安卓手机平台,复制libcrypto_1_1.so和libssl_1_1到任意位置,然后在项目中添加这两个文件
添加so文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/244453.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能,更多是修复bug ),本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

scrapy框架核心知识Spider,Middleware,Item Pipeline,scrapy项目创建与启动,Scrapy-redis与分布式

scrapy项目创建与启动 创建项目 在你的工作目录下直接使用命令: scrapy startproject scrapytutorial运行后创建了一个名为scrapytutorial的爬虫工程 创建spider 在爬虫工程文件内,运行以下命令: scrapy genspider quotes创建了名为quotes的爬虫 …

超融合系统疑难故障定位与解决实践 3 例(含信创技术栈)

当 IT 系统出现故障,问题定位往往是运维人员最头疼的环节。尤其是超融合系统,由于整体涉及的技术栈比较复杂,且有越来越多的用户基于信创环境进行部署,非常考验厂商和技术人员的专业能力:厂商研发和售后工程师不仅应能…

【C/C++】C/C++编程——C++ 开发环境搭建

C的开发环境种类繁多,以下是一些常见的C 集成开发环境: AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C,Java和Java开发的集成开发环境CLion:来自JetBrains的跨平台的C/C的集成开…

天津大数据培训班推荐,数据分析过程的常见错误

大数据”是近年来IT行业的热词,目前已经广泛应用在各个行业。大数据,又称海量信息,特点是数据量大、种类多、实时性强、数据蕴藏的价值大。大数据是对大量、动态、能持续的数据,通过运用分析、挖掘和整理,实现数据信息…

keil5 查看stm32 寄存器的值

1 查看芯片内部寄存器的值,首先是在仿真状态下,首先仿真,程序运行。 2 点击菜单栏的 View -> System viewer ,右侧便会出现芯片的所有寄存器(如果没有,需要添加),点击要查看的寄存器,便会出…

ARM安装与项目结构

1. 安装环境 参考E:\peixunQianrushi\arm\ziliao\FS4412新版(学生资料)\环境相关资料 这边建议全部默认路径 安装注意事项: 1、在接下来的安装过程中,对于使用win10、win8的操作系统的用户,所有的安装请均以管理员身份…

014-信息打点-JS架构框架识别泄漏提取API接口枚举FUZZ爬虫插件项目

014-信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&插件项目 #知识点: 1、JS前端架构-识别&分析 2、JS前端架构-开发框架分析 3、JS前端架构-打包器分析 4、JS前端架构-提取&FUZZ 解决: 1、如何从表现中的JS提取…

pytorch(二)梯度下降算法

文章目录 优化问题梯度下降随机梯度下降 在线性模型训练的时候,一开始并不知道w的最优值是什么,可以使用一个随机值来作为w的初始值,使用一定的算法来对w进行更新 优化问题 寻找使得目标函数最优的权重组合的问题就是优化问题 梯度下降 通…

Canvas-Editor 实现类似 Word 协同编辑

前言 对于word的协同编辑,已经构思很久了,但是没有找到合适的插件。今天推荐基于canvas/svg 的富文本编辑器 canvas-editor,能实现类似word的基础功能,如果后续有更好的,也会及时更新。 Canvas-Editor 效果图 官方文…

终极解决Flutter项目运行ios项目报错Without CocoaPods, plugins will not work on iOS or macOS.

前言 最近在开发Flutter项目,运行ios环境的时候报错没有CocoaPods,安卓环境可以正常运行,当时一脸懵逼,网上搜索了一下,有给我讲原理的,还有让我安装这插件那插件的,最终把电脑搞得卡死&#x…

【spring】代码生成器

📝个人主页:五敷有你 🔥系列专栏:spring ⛺️稳中求进,晒太阳 代码生成器(本质IO流) 在mybatis的逆向工程生成model和mapper接口和xml文件后,还需要反复的写Service的接口和…

UE5 C++学习笔记 FString FName FText相互转换

1.FString 是UE里的String。最接近std::string, 唯一可以修改的字符串类型。性能更低 TEXT(string) TEXT宏,作用是将字符串转换成Unicode,切记UE中使用字符串输出要使用该宏 2. FName 是UE里特有的类型。它更注重于表示名称不区分大小写,不…

元数据管理在数据仓库中的实践应用

一、什么是数据仓库的元数据管理? 1、什么是元数据? 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data)。 抽象的描述:一组用于描述数据的数据组,该数据组的一切信息都描述了该数据的某方面特征,则该数据组即可被称为元数据。 举几个…

MyBatis的逆向工程的创建,generator插件的使用和可能出现的一些问题,生成的实体类多出.java 1 .java 2这种拓展文件的处理方案

目录 创建逆向工程的步骤 ①添加依赖和插件 ②创建MyBatis的核心配置文件 ③创建逆向工程的配置文件 ④执行MBG插件的generate目标 数据库版本8有可能出现的问题: 1、生成的实体类多了.java 1 .java 2的拓展文件... 2、生成的属性与表中字段不匹配&#xff…

kafka(一)快速入门

一、kafka(一)是什么? kafka是一个分布式、支持分区、多副本,基于zookeeper协调的分布式消息系统; 二、应用场景 日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka推送到各种存储系统…

在markdown中添加视频的两种方法

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置,前后端开发环境的配置,编辑器的配置,网络服务的配置,网络命令的应用与配置,windows常见问题的解决等。 文章目录 方式一源代码: 方式二结尾语网络的梦想 markd…

多维时序 | Matlab实现GWO-TCN-Multihead-Attention灰狼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现GWO-TCN-Multihead-Attention灰狼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现GWO-TCN-Multihead-Attention灰狼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效…

【设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构】

文章目录 一、什么是LRU?二、LinkedHashMap 实现LRU缓存三、手写LRU 一、什么是LRU? LRU是Least Recently Used的缩写,意为最近最少使用。它是一种缓存淘汰策略,用于在缓存满时确定要被替换的数据块。LRU算法认为,最近…

多输入多输出 | Matlab实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现SSA-CNN麻雀算法优化卷积神经网络多输入…