一、请求与响应
1、请求
//请求行
//method path HTTP version
GET /user?gender=male HTTP/1.1
Host:www.xxx.com//请求头相关
2、响应
//状态行
//HTTP version 状态码 状态信息
HTTP/1.1 200 OK
content-type:application/json;charset=utf-8//响应头相关
.......
//响应体 body
[{"name":"Bob","age":22}]
3、请求方法分类
a.GET 获取资源;没有body
b.POST 增加或者修改资源;有body
c.PUT 修改资源;有body
d.DELETE 删除资源;没有body
e.HEAD 与GET类似 但是这个请求服务器不会返回body
4、状态码
- 1xx: 临时性消息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
5、Header
作用:HTTP消息的元数据
- Host:服务器主机地址(但不是用来寻址的,寻址是DNS(domian name system)的事情)
- Content-Type:内容的类型
- text/html;charset=utf-8 文本,用于浏览器页面响应
- application/x-www-form-urlencoded;charset=utf-8 普通表单, encoded URL格式
@FormUrlEncoded @POST("user/edit") Call<User> updateUser(@Field("first_name") String firstName,@Field("last_name") String lastName);
- multipart/form-data;boundary=----Webkit********** 多不分形式,一般用于传输包含二进制内容的多项目内容
@Multipart @PUT("user/photo") Call<User> updateUser(@Part("photo") RequestBody photo,@Part("description") RequestBody description);
- application/json;charset=utf-8 JSON格式
- image/jpeg jpeg图片的形式
- Content-Length:body内容的长度(字节)
- Tansfer-Encoding:chunked 表示Body长度无法确定,Content-Length不能使用
- location:https://www.baidu.com 重定向地址是百度https://www.baidu.com
- User-Agent:用户代理
- Range:bytes=<start>-<end> 请求报文中出现,表示要取哪段数据。
//图片总长度5000byte 请求的时候加上Range:bytes=0-3000 则只获取到图片的一部分
- Accept-Range:bytes 响应报文中出现,表示服务器支持按字节来取范围数据。
- Content-Range:<start>-<end>/<total> 响应报文中出现,表示要发送的是哪段数据。
Range、Accept-Range、Content-Range多用在断点续传、多线程下载。 - 缓存相关的header
- Cache-Control:no-cache(需要问一下服务端)、no-store(不需要缓存)、max-age(失效日期之前都可以使用缓存)
- Last-Modified:
- If-Modified-Since
- Etag:相当于一个hash 服务端用于表示内容的指纹。如果Etag相同,这直接使用缓存,不相同则返回新的内容。
- Accept: 客户端能接受的数据类型。如 text/html
- Accept-Charset: 客户端接受的字符集。如 utf-8
- Accept-Encoding: 客户端接受的压缩编码类型。如 gzip
- Content-Encoding:压缩类型。如 gzip
+Authorization:授权- Authorization:Basic xxxxxxxxx
- Authorization:Bearer <bearer token>
- OAuth2 第三方授权