HTTP

Hypertext Transfer Protocol(超文本传输协议)

HTTP 是一种规定客户端应用程序如何与服务器通信以及传输超文本文档的协议。


1、什么是超文本?

超文本,即「扩展型文本」,指的是 HTML 中可以有链向别的文本的链接(hyperlink)。

HTTP 和 HTML(Hypertext Markup Language 超文本标记语言)一起诞生,用于在网络上请求和传输 HTML 内容

2、HTTP 的工作方式

浏览器:用户输入地址后回车或点击链接 -> 浏览器拼装 HTTP 报文并发送请求给服务器 -> 服务器处理后发送响应报文给浏览器 -> 浏览器解析响应报文并使用渲染引擎显示到界面

手机APP:用户点击或界面自动触发联网需求 -> Android 代码调用拼装 HTTP 报文并发送请求到服务器 -> 服务器处理请求后发送响应报文给手机 -> Android 代码处理响应报文并作出相应处理(如存储数据、加工数据、显示数据到界面)

URL格式

三部分:协议类型、服务器地址(和端口号)、路径(Path)

协议类型://服务器地址[:端口号]路径

HTTP

请求报文

其中请求行从左到右依次为「请求方法」、「路径」、「HTTP版本号」

响应报文

其中状态行从左到右依次为「HTTP版本号」、「状态码」、「状态信息」

GET

  • 用于获取资源
  • 对服务器数据不进行修改
  • 不发送 Body

对应 Retrofit 的代码:

POST

  • 用于增加或修改资源
  • 发送给服务器的内容写在 Body 里面

对应 Retrofit 的代码:

PUT

  • 用于修改资源
  • 发送给服务器的内容写在 Body 里面

对应 Retrofit 的代码:

DELETE

  • 用于删除资源
  • 不发送 Body

对应 Retrofit 的代码:

HEAD

  • 和 GET 使用方法完全相同
  • 和 GET 唯一区别在于,返回的响应中没有 Body

三位数字,用于对响应结果做出类型化描述(如「获取成功」「内容未找到」)。

  • 1xx:临时性消息,如:100(继续发送)、101(正在切换协议)
  • 2xx:成功,最典型的是 200(OK)、201(创建成功)
  • 3xx:重定向,如 301(永久移动)、302(暂时移动)
  • 4xx:客户端错误,如 400(客户端请求错误)、401(认证失败)、403(被禁止)、404(找不到内容)
  • 5xx:服务器错误,如 500(服务器内部错误)

作用:HTTP 消息的 metadata