一种网络传输协议,位于TCP / IP协议族的最顶层- -- 应用层
Hypertext Transfer Protocol,超文本传输协议,和HTML (Hypertext Markup Language超文本标 记语言)一起诞生,用于在网络上请求和传输HTML内容。
超文本,即「扩展型文本」,指的是HTML中可以有链向别的文本的链接(hyperlink)
用户在输入地址之后回车或者点击链接,然后浏览器会拼装HTTP报文并发送请求给服务器,然后服务区处理请求后会发送响应报文给浏览器,然后浏览器再解析响应报文再使用渲染引擎显示到界面
用户点击或者界面自动触发联网需求,然后Android代码调用拼装HTTP报文并发送请求到服务器,然后服务器处理请求之后再发送响应报文给手机,最后Android代码会处理响应报文并作出相应的处理比如数据存储,显示数据到界面等等
三部分:协议类型,服务器地址(和端口号),路径
格式为 协议类型://服务器地址[:端口号]路径
http://hencoder.com/user?gender=male
三部分:请求行,Headers,Body
请求行的格式为 方法/路径/HTTP version 比如 GET/users HTTP/1.1
Headers 也分为三部分 Host ,Content-Type ,Content-Lenth 比如
Host :api.github.com
Content-Type :text/plain
Content-Lenth:243
三部分:状态行,Headers,Body
状态行 HTTP version /status code /status message 比如HTTP/1.1 200 ok
- 用于获取资源
- 对服务器数据不进行修改
- 不发生body
对应的Retrofit代码
@GET(" /users/{id}")
Call<User> getUser(@Path("id") String id, @Query("gender") String gender);
##### Post
- 用于增加或者修改资源
- 发送给服务器的内容写在body里
对应的Retrofit代码:
@FormUrlEncoded
@PUT(" /users/{id}")
Call<User> updateGender( @Path("id") String id, @Field("gender") String
gender) ;
- 用于修改资源
- 发送给服务器的内容写在body里面
对应的Retrofit代码:
@FormUrlEncoded
@PUT(" /users/{id}")
Call<User> updateGender( @Path("id") String id, @Field("gender") String
gender);
- 用于删除资源
- 不发送body
对应的Retrofit代码:
@DELETE("/users/{id}")
Call getUser(@Path("id") String id, @Query("gender") String gender);
- 和GET的使用方法完全相同
- 和FET的唯一区别在于,返回的相应中没有body
三位数字,⽤于对响应结果做出类型化描述(如「获取成功」「内容未找到」)
- 1xx:临时性消息。如:100 (继续发送)、101(正在切换协议) 。
- 2xx:成功。最典型的是 200(OK)、201(创建成功)。
- 3xx:重定向。如 301(永久移动)、302(暂时移动)、304(内容未改变)。
- 4xx:客户端错误。如 400(客户端请求错误)、401(认证失败)、403(被禁⽌)、404(找 不到内容)。
- 5xx:服务器错误。如 500(服务器内部错误)。
作⽤:HTTP 消息的 metadata。
⽬标主机。注意:不是在⽹络上⽤于寻址的,⽽是在⽬标服务器上⽤于定位⼦服务器的。
指定 Body 的类型。主要有四类:
-
请求 Web ⻚⾯是返回响应的类型,Body 中返回 html ⽂本。格式如下:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 853
<! DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
⻚⾯纯⽂本表单的提交⽅式。
name=rengwuxian&gender=male
⻚⾯含有⼆进制⽂件时的提交⽅式。
单项内容(⽂本或⾮⽂本都可以),⽤于 Web Api 的响应或者 POST / PUT 的请求
指定 Body 的⻓度(字节)。
⽤于当响应发起时,内容⻓度还没能确定的情况下。和 Content-Length 不同时使⽤。⽤途是尽早给 出响应,减少⽤户等待。
指定重定向的⽬标 URL
⽤户代理,即是谁实际发送请求、接受响应的,例如⼿机浏览器、某款⼿机 App。
Range / Accept-Range
Accept-Range: bytes 响应报⽂中出现,表示服务器⽀持按字节来取范围数据
Range: bytes=- 请求报⽂中出现,表示要取哪段数据
Content-Range:-/total 响应报⽂中出现,表示发送的是哪段数据
作⽤:断点续传、多线程下载。
作⽤:在客户端或中间⽹络节点缓存数据,降低从服务器取数据的频率,以提⾼⽹络性能。
REST HTTP 即正确使⽤ HTTP。包括:
- 使⽤资源的格式来定义 URL
- 规范地使⽤ method 来定义⽹络请求操作
- 规范地使⽤ status code 来表示响应状态
- 其他符合 HTTP 规范的设计准则
- 第四题:请求行由 method path http版本 三部分组成
- 第八题:post方法用于增加或修改资源,请求报文中含有body
- 第九题:put不能增加资源,只能修改资源
- 第十题:delete方法含有body
2020.6.30 22:31
2020.9.9 21:46复习