Android进阶之路Android 开发技术分享Android Developers

HTTP 基础知识

2020-09-13  本文已影响0人  A_si

周末闲着没事,就复习下 HTTP 基础知识。

HTTP到底是什么?

  1. 浏览器输入url,打开一个网页。
  2. 开发者发送网络请求,返回数据。

以上2点都是 HTTP 的应用,HTTP 的全称是 HyperText Transfer Protocol 超文本传输协议。我们要获取想要的数据,就需要定义一种协议,不然怎么知道拿到的或者发出的是对方需要的呢。

HTTP 的工作方式是声明?

sequenceDiagram
浏览器->>服务器: 发送请求
服务器-->>浏览器: 响应

在浏览器输入一个地址,显示一个网页的过程,也就是浏览器发送请求到输入地址对应的服务器,服务器把对应页面数据返回给浏览器,浏览器渲染出来的。这个过程中,怎么把地址栏的url转化成请求的?请求和响应的数据格式是声明呢?

转化

https://api.github.com/users/octocat/orgs
上面的url会被拆分为3部分:

  1. 协议类型 :HTTP
  2. 服务器地址:api.github.com
  3. 路径:/users/octocat/orgs

然后组成请求报文,被浏览器通过 HTTP 发送。

请求报文

requese 报文结构:

报文.jpg

上面的URL转化后的样子如下:

未命名绘图.jpg

请求方法

PUT 和 POST 的区别在于,PUT 只修改数据,不增加。

响应报文

response 报文结构:

响应.jpg
截屏2020-09-12 上午11.00.45.png

一些常见响应码:

各类型常见状态代码、状态描述的说明如下:

Header

Header 里是 HTTP 消息的元数据,常用的有下面几项:

Host

Host 的值是服务器主机地址,在请求发送前,通过 dns寻址,找到对应的主机。

Content-Type/Content-Length

Content-Length:内容的长度,字节为单位
Content-Type:内容的类型,一般有以下几种:

Location

在 服务器重定向的时候,会返回 Location ,它的值就是新的主机地址。

User-Agent

是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识,应用开发中,我们可以告诉浏览器我们是哪个版本的应用,方便前端做版本控制。

Range/Accept-Range

响应头里如果有Accept-Range,说明支持分段加载,比如打开一个百度美女图片

截屏2020-09-13 上午10.00.54.png

就代表支持分段加载,单位是 bytes,我们可以在请求头里指定 Range:bytes=0-1000,这个图片是 2000 字节,这样只会显示一半。下半段我们没有请求。

Cookie/Set-Cookie

发送和设置 Coolie

Authorization

授权信息

Accept

客户端能接受的数据类型,如 text/html

Accept-Charset

客户端能接受的字符集

Accept-Encoding

客户端能接受的压缩编码类型,如 gzip

Content-Encoding

压缩类型,如 gzip

上一篇 下一篇

猜你喜欢

热点阅读