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类提供的各种方法,就可以获取响应头,响应体等各种数据文章来源:https://www.toymoban.com/news/detail-721994.html
3.发送HTTP请求,根据请求的地址构建一个QUrl对象,然后直接调用QNetworkAccessManager的get方法,即可发送一个GET请求文章来源地址https://www.toymoban.com/news/detail-721994.html
到了这里,关于Qt中的HTTP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!