HTTP的概念、工作机制、数据格式、方法使用
HTTP的定义
HTTP(Hypertext Transfer Protocol),超文本传输协议。位于 TCP / IP 协议族的最顶(层应用层)。和HTML一起诞生,用于在网络上请求和传输HTML内容。
HTTP的工作方式
1、用户输入地址后回车
2、浏览器拼装 HTTP 报⽂并发送请求给服务器
3、服务器处理请求后发送响应报文给浏览器
4、浏览器解析响应报文并渲染显示到界⾯
URL和HTTP报文
URL格式
四部分:协议类型、服务器地址、端口、路径
协议类型://服务器器地址[:端⼝口号]路路径
https://api.github.com/users/list?sort=desc
报文格式
请求报文
响应报文
请求方法
GET
1、用于获取资源
2、对服务器数据不进行修改
3、不发送Body
对应Retrofit的代码:
POST
1、用于增加或修改资源
2、发送服务器的内容写在Body里面
对应Retrofit的代码:
PUT
1、用于修改资源
2、发送服务器的内容写在Body里面
对应Retrofit的代码:
DELETE
1、用于删除资源
2、不发送Body
对应Retrofit的代码:
HEAD
1、和GET使用方法完全相同
2、和GET唯一区别在于,返回的响应中没有Body
状态码
三位数字,用于对响应结果做出类型化描述(如「获取成功」「内容未找到」)。
1xx:临时性消息。如:100 (继续发送)、101(正在切换协议)
2xx:成功。如:200(OK)、201(创建成功)。
3xx:重定向。如:301(永久移动)、302(暂时移动)、304(内容未改变)。
4xx:客户端错误。如:400(客户端请求错误)、401(认证失败)、403(被禁⽌止)、404(找 不不到内容)。
5xx:服务器错误。如:500(服务器器内部错误)。
Header 首部
Host
目标主机。用于在目标服务器上定位子服务器,不是在网络上用于寻址。
Content-Type
指定 Body 的类型。主要有四类:
1、text/html
2、x-www-form-urlencoded
3、multitype/form-data
4、application/json , image/jpeg , application/zip ...
Content-Length
指定 Body 的⻓长度(字节)。
Location
指定重定向的目标 URL
User-Agent
用户代理,即是谁实际发送请求、接受响应的,例如手机浏览器、某款手机 App。
Range / Accept-Range
按范围取数据
Accept-Range: bytes 响应报文中出现,表示服务器支持按字节来取范围数据
Range: bytes=<start>-<end> 请求报文中出现,表示要取哪段数据
Content-Range:<start>-<end>/total 响应报文中出现,表示发送的是哪段数据
作用:断点续传、多线程下载。
其他 Headers
Accept: 客户端能接受的数据类型。如 text/html
Accept-Charset: 客户端接受的字符集。如 utf-8
Accept-Encoding: 客户端接受的压缩编码类型。如 gzip
Content-Encoding:压缩类型。如 gzip
Cache
作用:在客户端或中间网络节点缓存数据,降低从服务器取数据的频率,以提高网络性能。