关于HTTP的一些介绍

本篇将介绍并分析Http请求

关于HTTP的一些介绍

理论

HTTP的介绍

在Android中,绝大多数的应用网络通信都是基于Http协议的,Http协议处于应用层,应用层协议就是为了来规范传输格式

HTTP工作流程

  1. 客户端连接到服务器

    客户端发起一个TCP请求到服务器,经过3次握手与服务器建立TCP连接

  2. 发送数据

    按照Http协议规定的格式来组装数据,通过TCP连接向服务器发送报文

  3. 服务器接收请求报文并处理

    服务器同过TCP连接接收到客户端发送的请求报文,按照规定格式解读报文,根据解读来生产对应的响应报文

  4. 服务器将生成的响应报文发送给客户端

    服务器通过TCP连接将响应报文发送给客户端

  5. 关闭TCP连接

    在服务器将报文发给客户端之后,会将connection模式设置为close,则是服务器主动关闭连接,客户端被动关闭。如果connection模式设置为keepalive,则TCP连接不会马上关闭,还可以继续发送请求

  6. 客户端处理响应报文

    按照规则进行解析

HTTP报文格式

请求报文(请求数据)

  • 请求报文由请求行请求头部空行请求数据四部分组成

  • 请求数据(这里以百度搜索’白色‘进行示范)

    Request URL :请求地址

    Request Method:请求模式

    Status Code:请求状态码

    Remote Address:远程主机IP地址

    请求格式如下图

  • 请求参数

    请求参数不在GET中使用,而是在POST中使用,它表示向服务器传递附加的参数,格式如下

    1
    {"seeType":1,"source":1,"userId":"30"}

请求行

  • 请求行是由*请求方式**URL地址*、**协议名+版本号组成

    POST(请求方式) /lotto/android/v1.0/order-group/queryOrderGroupPersonInfo(URL地址) HTTP/1.1(协议版本)

  • 请求方式

    HTTP请求的方式总共有8种,分别是GET、POST、HEAD、PUT、DELETE、TRANCE、CONNECTON、OPTIONS。下面介绍常用的2种

    • GET

      获取Request URL下所以资源(也就是不带参数)

    • POST

      在Request URL所表示的资源后附加参数,以便于向服务器发送请求数据(也就是可以传递参数来获取指定的资源)

  • URL地址

    为请求对应的URL地址,它和报文头中的Host属性组成完整的请求URL地址

  • 使用协议名称+版本号

    也就是字面意思,使用的协议和它当前的版本

请求头部

在请求行之后会有0或多个请求头部

accept-ranges:表明其支持部分的请求的标志物,此字段表示可用于定义范围的单位

age:age的值一般是近于0的,像是这样Age:0,这样只能在原服务器获取,否则它通常是根据代理的当前日期和**Date**HTTP响应中包含的通用头部之间的差异来计算的。

空行