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级json

QJsonDocument 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.mfbz.cn/a/342913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是BMC

BMC全称为Baseboard Management Controller(基板管理控制器),是一种独立于服务器操作系统和主处理器的专用微控制器,它内置在服务器、网络设备和其他复杂电子系统的主板上。BMC主要负责监控和管理系统硬件的状态,并提供…

模型之气体的行为

气体的行为 “探索气体动理论:分子运动与温度的统计关系” 气体动理论由丹尼尔•伯努利在1738年提出,后来又由麦克斯韦、玻尔兹曼等人在19世纪后半叶推进。根据这种理论,气体是由运动着的分子组成的,气体的许多性质——如温度和…

“深入理解RabbitMQ交换机的原理与应用“

深入理解RabbitMQ交换机的原理与应用 引言1. RabbitMQ交换机简介介绍1.1 什么是RabbitMQ?1.1.1 消息中间件的作用1.1.2 RabbitMQ的特点和优势 1.2 RabbitMQ的基本概念1.2.1 队列1.2.2 交换机1.2.3 路由键 1.3 交换机的作用和分类1.3.1 直连交换机(direct…

【MySQL进阶】锁

文章目录 锁概述全局锁语法特点 表级锁表锁意向锁 行级锁行锁间隙锁&临键锁 面试了解数据库的锁吗?介绍一下间隙锁InnoDB中行级锁是怎么实现的?数据库在什么情况下会发生死锁?说说数据库死锁的解决办法 锁 概述 锁机制:数据库…

C++进阶--哈希的应用之位图和布隆过滤器

哈希的应用之位图和布隆过滤器 一、位图1.1 位图(bitset)的提出1.2 位图的概念1.3 位图的模拟实现1.3.1 位图的底层结构1.3.2 位图的成员函数1.3.2.1 位图的构造1.3.2.2 位图的插入:set1.3.2.3 位图的删除:reset1.3.2.4 位图的查找…

LLM for Kernel Fuzzing

KernelGPT: Enhanced Kernel Fuzzing via Large Language Models 1.Introduction2.Background2.1.Kernel and Device Drivers2.2.Kernel Fuzzing2.2.1.Syzkaller规约2.2.2.规约生成 3.Approach3.1.Driver Detection3.2.Specification Generation3.2.1.Command Value3.2.2.Argum…

鸿蒙自定义刷新组件使用

前言 DevEco Studio版本:4.0.0.600 1、RefreshLibrary_HarmonyOS.har,用于HarmonyOS "minAPIVersion": 9, "targetAPIVersion": 9, "apiReleaseType": "Release", "compileSdkVersion": "3.…

【Redis】Redis如何实现key的过期删除

​ 🍎个人博客:个人主页 🏆个人专栏:Redis ⛳️ 功不唐捐,玉汝于成 ​ 目录 前言 正文 结语 我的其他博客 前言 在当今信息时代,数据的快速存储和高效检索成为了软件系统设计中的核心需求。Redis作为…

idea中git提交代码更改作者名字

代码提交远程的时候显示的是上一个离职同事的用户名,有两种方法进行更改 在C盘【C:\Users\Administrator】中找到.gitconfig文件 进行更改 打开文件 将姓名以及邮箱改成自己的即可 [user] name xxxxx email xxxxx163.com 如图所示 命令行更改 在Termi…

ESP32-WROVER-DEV连接W5500实现有线网络

目的:ESP32-WROVER-DEV相机模块连接W5500模块,实现有线网络的连接。 开发环境:Arduino 2.1.1 可以实现的功能:可以使用web的ping访问,ESP32的LED IO2闪烁。 硬件连接如下图: 模块硬件的导线连接 W5500 …

SpringBoot项目整合MybatisPlus并使用SQLite作为数据库

文章目录 SQLite介绍搭建项目创建项目修改pom.xml SQLite查看SQLite是否安装创建数据库创建数据表IDEA连接SQLitenavicat连接SQLite数据库 后端增删改查接口实现MybatisX生成代码不会生成看这个UserUserMapperUserMapper.xml controller创建配置文件application.yaml启动类Incr…

行测-判断:2.类比推理

行测-判断:2.类比推理 给出一组相关的词,要求通过观察分析,在备选答案中找出一组与之在逻辑关系上最为贴近或相似的词。 1. 语义关系★★ 1.1 近义关系,反义关系 C,反义词 B,BD 都是近义词,考…

JavaEE-SSM-订单管理-后端增删改查(二)

.2.5 添加 编写OrderMapper接口中的insert方法 编写OrderService接口中的save方法 编写OrderServiceImpl实现类中的save方法 编写OrderController中的add方法 编写OrderMapper接口中的insert方法 /*** 插入* param order* return*/Insert("insert into order(oid,pr…

MySQL之数据库DDL

文章目录 MySQL数据库基本操作数据定义DDL对数据库的常用操作创建表修改表格式结构 MySQL数据库基本操作 首先我们先了解SQL的语言组成,他分为四个部分 数据定义语言(DDL)数据操纵语言(DML)数据控制语言(…

如何使用宝塔面板搭建Typecho博客站点并结合内网穿透远程访问

文章目录 前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 Typecho是由type和echo两个词合成的,来自于开发团队的头脑风暴。Typecho基于PHP5开发,支持多种数据库&#…

算法(4)——前缀和

目录 一、前缀和的定义 二、一维前缀和 三、一维前缀和OJ题 3.1、前缀和 3.2、寻找数组中心下标 3.3、除自身以外数组的乘积 3.4、和为K的数组 3.5、和可被K整除的子数组 3.6、连续数组 四、二位前缀和 4.1、二维前缀和 4.2、矩阵区域和 一、前缀和的定义 对于一个…

Quartz框架中的Corn表达式

Cron 表达式是一个字符串,分为 6 或 7 个域,每一个域代表一个含义 Cron 有如下两种语法格式: (1)Seconds Minutes Hours Day Month Week Year (2)Seconds Minutes Hours Day Month Week 一、…

Java SE:面向对象(下)

1. static关键字 静态区的特点:静态区里面的每一样东西都是唯一有且仅有一个的,如此时str1 "abc"即此时静态区里面已经创建了字符串abc并将abc地址赋给str1,后面在进行赋值也不会在静态区开辟一串新的"abc" 1.1 static修…

蓝桥杯省赛无忧 课件38 第4次学长带练配套课件

01 最大数组和 02 四元组问题 03 鸡哥的购物挑战 04 冒险者公会 05 明日方舟大挑战 06 七段码

一.Winform使用Webview2(Edge浏览器核心) 创建demo(Demo1)实现回车导航到指定地址

Winform使用Webview2创建demo1实现回车导航到指定地址 往期目录参考文档实现1.安装visual studio2.创建单窗口应用3.修改项目中的窗体名称MainForm4.添加按钮5.添加窗口Demo16.在Demo1中添加WebView2 SDK7.在Demo1窗体中选择添加textbox和webview28.在MainForm.cs窗体中添加but…
最新文章