Qt中的HTTP

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请求

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值