📗
Notes
  • Introduction
  • Files
  • Android
    • Http
      • Http基础
      • Okhttp理解
    • Jetpack
      • Notes
  • Java ways
    • 101
      • Basis
        • Index
        • Front
          • Angular
            • Angular start 01
            • Angular start 02
          • Typescript
            • Index
            • Ts 01
        • Java
          • Concurrency
          • Frameworks
            • Jdbc与连接池
            • Rxjava基础
            • Spring框架基础
          • Sugar&skill
        • Tool
          • Docker
            • Docker basis
            • Kubernetes play
          • Git
            • Git basic
          • Vim
            • Vim advance
      • Cs
        • Imp
          • Lru
          • Index
    • Snippets
      • Jpa和spring系列注解表
      • Java与oracle数据库各种操作
      • Maven初始化template
      • Nginx配置
      • Nginx反代后配置自动ssl续签
      • 终端033颜色
    • Ways
      • Java ways 01
      • Interview
        • Question
        • Requirements
      • Leetcode101
        • Acwing
          • Index
          • 背包问题
        • Explores
        • Solutions
          • Algorithms
            • Index
          • Concurrency
            • Index
          • Shell
            • Index
          • Sql
            • Index
  • Leecode
    • 牛客
      • 剑指offer
  • Play
    • Youtube离线下载
  • Python basic notes
    • Python days
Powered by GitBook
On this page
  • HTTP的定义
  • HTTP工作机制
  • 浏览器
  • 手机APP
  • URL和HTTP报文
  • URL格式
  • 报文格式
  • 请求方法 - Request Method
  • 状态码 - Status Code
  • 头部 - Header
  • Cache
  • REST

Was this helpful?

  1. Android
  2. Http

Http基础

   Author: Gentleman.Hu
   Create Time: 2021-06-18 17:26:25
   Modified by: Gentleman.Hu
   Modified time: 2021-06-18 18:19:23
   Email: justfeelingme@gmail.com
   Home: https://crushing.xyz
   Description: HTTP基础

HTTP的定义

Hypertext Transfer Protocol, 超文本传输协议, 与HTML一起诞生, 用于请求和传输HTML内容.

HTTP工作机制

浏览器

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

手机APP

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

URL和HTTP报文

URL格式

  1. 协议类型

  2. 服务器地址(端口号)

  3. 路径(path)

报文格式

  • 请求报文

  • 响应报文

请求方法 - Request Method

  • GET

    • 获取资源

    • 不对服务器数据进行修改

    • 不发送body

GET /users/1 HTTP/1.1
Host: api.github.com

对应的Retrofit代码:

@GET("/users/{id}")
Call<User> getUser(@Path("id") String id, @Query("gender") String gender);
  • POST

    • 增加或者修改资源

    • 发送给服务器的内容在body里

POST /users HTTP/1.1 
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

name=godlin&gender=male

对应Retrofit代码:

@FormUrlEncoded
@POST("/users")
Call<User> addUser(@Field("name") String name, @Field("gender") String gender);
  • PUT

PUT /users HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

gender=female

对应Retrofit代码:

@FormUrlEncoded
@PUT("/users/{id}")
Call<User> updateUser(@Path("id") String id, @Field("gender") String gender);
  • DELETE

DELETE /users HTTP/1.1
Host: api.github.com

Retrofit代码

@DELETE("/users/{id}")
Call<User> deleteUser(@Path("id") String id,@Query("gender") String gender);
  • HEAD

    • 跟GET用法一致

    • 唯一区别,返回响应无Body

状态码 - Status Code

  • 1xx: 临时消息,100继续发送,101正在切换协议

  • 2xx: 成功.200 ok,201 创建成功

  • 3xx: 重定向. 301永久移动,302临时移动,304内容未改变

  • 4xx: 客户端错误. 400客户端请求错误,401认证失败,403禁止,404找不到

  • 5xx: 服务器错误. 500服务器内部错误.

头部 - Header

作用: HTTP消息的metadata

  • Host: 目标主机. ! 不是用于网络寻址的,而是在目标服务器上用于定位子服务器的.

  • Content-Type: 指定Body类型,主要4类

    • text/html

    • x-www-form-urlencoded

    • multipart/form-data

    • application/json, image/jpeg, application/zip ...

  • Content-Length

  • Transfer: chunked

  • Location

  • User-Agent: 用户代理.谁实际发送请求,接受响应.

  • Range/Accept-Range

    • Accept-Range: bytes 服务器按照字节取范围数据

    • Range: bytes=- 请求报文出现,表示取那段数据

    • Content-Range: -/total 响应报文中出现,表示发送的是那段数据

    • 作用: 断点续传,多线程下载

  • Accept: 客户端可以接受的数据类型.如 text/html

  • Accept-Charset: 客户端接受的字符集.如 utf-8

  • Accept-Encoding: 客户端接受的压缩编码类型.如gzip

  • Content-Encoding: 压缩类型. 如gzip

Cache

作用: 在客户端或者中间网络节点缓存数据,降低从服务器取数据的频率,提高网络性能.

REST

  • 使用资源的格式定义URL

  • 规范使用method定义网络请求操作

  • 规范使用status code表示响应状态

  • 其他服务HTTP规范的设计准则

copy from hencoder notes pdf

PreviousHttpNextOkhttp理解

Last updated 3 years ago

Was this helpful?

协议://服务器地址[:port]/路径

https://www.crushing.xyz