Qt中的HTTP

2023-10-27

HTTP概述

HTTP是一种超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,是浏览器端Web通信的基础。

两种架构

B/S架构:Browser/Server,浏览器/服务器架构。
C/S架构:Client/Server,客户端/服务端架构。
B/S架构相对于C/S架构,客户机上无需安装任何软件,使用浏览器即可访问服务器,因此,越来越多的C/S架构正被B/S架构所替代。

基于请求响应的模式

HTTP协议永远都是客户端发起请求,服务器做出响应,即,请求一定是从客户端发起的,服务端在没有收到请求之前是不会做出响应的,也就是说,服务端无法主动推送消息给客户端。

无状态

什么是HTTP的无状态呢? 当浏览器第一次发送请求给服务器时,服务器做出响应,当浏览器第二次发送请求给服务器时,服务器依然做出响应,但服务器并不知道第一次和第二次的请求是不是来自同一个浏览器,即服务器并不会记住请求的是谁。这就是HTTP的无状态。
那怎么使HTTP有状态呢? 很简单,只要加入cookie就可以了,只要在请求时有了这个cookie,服务器就能通过cookie知道,你是不是之前的那个浏览器,这就使HTTP有状态了。

请求报文

请求报文由四部分组成: 分别是请求行,请求头(请求首部字段),空行,实体。
请求行: 请求行里面有:请求方法(GET,POST),资源对象(URI),协议名称和版本号(HTTP/1.1)如:POST/链接 HTTP/1.1
请求头(首部字段): 请求头由于告诉服务器该请求的一些信息,起到传递额外信息的目的。
空行: 空行是为了区分请求头和请求实体
实体: 请求实体即真正所需要传输的数据

响应报文

响应报文由四部分组成: 状态行,响应头,空行,消息体
状态行: 状态行由三部分组成:HTTP版本,状态码(表示相应的结果)原因短语(解释)

HTTP/2 200 OK
HTTP/2 协议和版本
200 状态码 - 200代表OK,表示请求成功,404代表NOT FOUND,表示请求失败,所请求资源未在服务器上发现
OK 原因短语

响应头(响应报文首部): 为了传递额外信息
空行: 为了区别响应实体和响应首部
响应实体: 真正存储响应信息的部分

请求方式

常用请求有GET和POST
二者最主要的区别是:

GET请求的参数位于URL,会显示在地址栏上
POST请求的参数位于request body请求体中
GET请求的安全性不如POST请求,并且GET请求的参数有长度限制,而POST没有

Qt实现HTTP请求

Qt提供了专门的类,用来实现HTTP请求

1.首先要创建一个QNetworkAccessManager对象,这是Qt中进行HTTP请求的开端

2.在发送HTTP请求之前,先关联信号槽。请求结束,获取到服务器的数据时,QNetworkAccessManager对象会发射一个finished信号,该信号携带一个QNetworkReply的信号,服务器返回的所有数据就封装在其中,通过QNetworkReply类提供的各种方法,就可以获取响应头,响应体等各种数据

3.发送HTTP请求,根据请求的地址构建一个QUrl对象,然后直接调用QNetworkAccessManager的get方法,即可发送一个GET请求

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中的HTTP 的相关文章

随机推荐

  • Springboot框架通过@Scheduled实现定时任务

    一 开启定时任务方法 Scheduled定时任务是Spring boot自身提供的功能 所以不需要引入Maven依赖包 在项目入口main方法上加注解 EnableScheduling 开启定时任务 二 不同定时方式的解析 1 fixedD
  • rom查找表matlab,用matlab生成查找表输出coe文件给xilinx的Mem_IPCore使用

    这是一个coe文件的例子 Sample initialization file for a 32 bit wide by 16 deep RAM 这是注释说明性文字 memory initialization radix 16 2 10 1
  • 三、高级数据结构和算法:树的遍历

    3 树的遍历 树的遍历 是指依照一定的规律不反复地访问树中的每个节点 遍历是将非线性的树状结构按一定规律转化为线性结构 3 1 多叉树遍历 多叉树遍历分为深度优先遍历和广度优先遍历两类 3 1 1 深度优先遍历 Depth First Se
  • 基础算法题——整除光棍(Java大数)

    整除光棍 这里所谓的 光棍 并不是指单身汪啦 说的是全部由1组成的数字 比如1 11 111 1111等 传说任何一个光棍都能被一个不以5结尾的奇数整除 比如 111111就可以被13整除 现在 你的程序要读入一个整数x 这个整数一定是奇数
  • Java Date类,DateFormat类,Calendar类用法。

    1 Date类 java util Date 表示日期和时间的类 类Date表示特定的瞬间 精确到毫秒 毫秒 千分之一秒 1000毫秒 1秒 毫秒值的作用 可以对时间和日期进行计算 例如 可以对时间和日期进行计算 2088 01 03到20
  • Nginx自动化部署脚本(在线离线均适用)

    bin bash Author Wang Dajiang Date 2023 01 18 FileName install nginx sh csdn https blog csdn net sinat 41836475 type blog
  • .net mysql 特殊字符转义字符_MySQL 特殊字符转义问题

    模糊查询时 很多特殊字符都是有特定意义的 比如 等 这些在模糊查询中都是通配符 如果用户在前端的输入是没有限制的 那么 一旦输入相关特殊字符 就会获得错误的查询结果 出于需求的细致要求 这个问题是需要解决的 在网上找了很多资料 发现能够完全
  • 基于k-means聚类算法的城市出租车GPS时空分布特征分析

    目录 前言 一 研究目的 二 数据源 三 数据预处理 3 1 通用预处理 3 2 删除出租车数据中载客状态瞬间变化的记录 3 3 获取OD数据 3 4 判断每一辆出租车的OD数据中最靠近整点时刻的记录 采用字典形式储存 3 5 将每一整点时
  • AIGC赋能教育

    在这个科技迅速进步的时代 全球教育领域正迎来一场前所未有的数字化和技术化变革 而AIGC则是代表了人工智能与教育的融合 它正在改变着学习方式 提高教育质量 并重新定义了教育的未来 我们正在亲眼目睹AIGC如何塑造着全球教育的格局 为学生 教
  • 最新IDE流行度最新排名(每月更新)

    2023年09月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多 这个IDE就被认为越受欢迎 原始数据来自谷歌Trends 如果您相信集体智慧 Top IDE索引可以帮助您决
  • 查看Linux服务器上当前机器监听的端口信息

    netstat lntp
  • 找不到viewModels,viewModels()

    谷歌官方文档上学习mvvm 当我写到private val model UserViewModel by viewModels 时 viewModels 爆红 查了资料 找到gradle 添加依赖 dependencies implemen
  • (二)Java常量与变量

    Java常量与变量 主要内容 标识符 关键字 变量 数据类型 类型转换 常量 一 标识符与关键字 1 标识符 类的名字就是标识符 标识符的命名规则 标识符只能由字母数字下划线和美元符 组成 不能以数字开头 标识符不能有空格 标识符严格区分大
  • 龙蜥(Anolis) 编译PHP-8.1.22提示No supported shared memory caching support was found when configuring opcac

    龙蜥 Anolis 编译PHP 8 1 22提示No supported shared memory caching support was found when configuring opcac 使用龙蜥 Anolis 编译安装php8
  • SpringBoot入门最详细教程

    网上有很多springboot的入门教程 自己也因为项目要使用springboot 所以利用业余时间自学了下springboot和springcloud 使用下来发现springboot还是挺简单的 体现了极简的编程风格 大部分通用都是通过
  • 如何用ChatGPT使开发效率提高50%以上?

    简介 ChatGPT是一个大型语言模型 由OpenAI开发 它被训练用于进行对话式交互 能够理解和生成自然语言文本 ChatGPT可以用于多种任务和场景 包括但不限于 智能助手 创意生成 语言学习 编程辅助等 ChatGPT的优势在于它的广
  • Eclipse汉化教程

    在看了很多博主的安装教程后 我不是很懂为什么要查找版本号 此处提供另一种方法 1 查看eclipse安装时间 若刚安装的 请直接看第二条 打开eclipse 在help里找到about 具体请看下图的图标和位置 打开后 找到buildid
  • Java多线程基础之创建和运行

    前言 在现代软件开发中 多线程编程已经成为一项重要的技能 通过合理地利用多线程 我们可以实现并发处理 提高程序性能和改善用户体验 本文将介绍Java中多线程编程的基础知识 包括多线程的概念 线程的创建和运行 以及线程的生命周期和状态转换 一
  • Linux(ubuntu)上安装vmware workstation虚拟机

    Linux ubuntu 上安装vmware workstation虚拟机 首先下载vmware workstation 官网下载地址 https www vmware com products workstation pro workst
  • Qt中的HTTP

    Qt中的HTTP HTTP概述 两种架构 基于请求响应的模式 无状态 请求报文 响应报文 请求方式 Qt实现HTTP请求 HTTP概述 HTTP是一种超文本传输协议 是一种用于分布式 协作式和超媒体信息系统的应用层协议 是浏览器端Web通信