概念
- 两种最直观的印象
· 浏览器地址栏输入地址,打开网页
· Android 中发送网络请求,返回对应内容 - HyperText Transfer Protocol 用于传输超文本的协议.以前是HTML,现在也包括Web API的数据
工作模型
- 客户端按需求组装HTTP报文,发送给服务器,服务器处理后得到响应报文,发回给客户端,客户端处理响应报文
URL-> HTTP 报文
- 示例 :http:// xxxxxx.com/users?gender=male
- http: 协议类型
- xxxxxx.com (Host 域名服务器主机地址,但是不是用来寻址的)
- user?gender=male 路径 path
工作方式
-
示例
28e2ddbb35101d863cfab0e1aefc092.png
请求格式(报文格式 :Request)
- 请求行
- method :请求方法 GET 、 POST、 PUT、DELETE、HEAD
- path : 请求路径(给服务器看的,负责定位)
- HTTP verson :目前大部分用的都是1.1版本
- Header
- Host :服务器主机地址
- Content-Type :
- Content-Length: 内容的长度(字节)
- Body
- 要发给服务器的内容

返回数据格式 (报文格式 Reponse)
- 状态行
- HTTP version :HTTP 版本
- status code : 返回请求的状态码,对结果做出类型化描述
- 1xx: 临时性消息 100 101
- 2xx: 成功
- 3xx: 重定向 (301 永久性迁移,需要重新定位 304 内容数据无改变)
- 4xx: 客户端错误
- 5xx: 服务端错误
- status message :返回的状态信息
- Header
- Content-Type
- cache-control
- vary
- etag
- content-encoding:
-
Body
3521b6ba25cde336041ed5b3d01e24c.png
Request method详解
- Get
- 获取资源 : 没有body
示例 :
GET/users/1 HTTP/1.1
Host:api.githup.com
- POST
- 增加或者修改资源: 有body
示例:
POST/users/1 HTTP/1.1
Host:api.githup.com
请求体 name =rengwuxian&gender=male
- PUT(有幂等性)
- 修改资源 : 有Body
- DELETE(具有幂等性)
- 删除资源 : 没有Body
Head
- 和GET 几乎一样,区别Head 请求后服务求不会返回body,其余都会返回
- Header
- 作用: HTTP消息的元数据(metadata)
- Host:服务器主机地址
例子 Host :api.githup.com -> "域名主机地址" 不是用来寻址的,在发出请求之前,通过DNS (域名系统)找到IP地址,例如返回IP地址“20.35.”,然后通过IP地址找到目标服务器, 一个域名可以对应多个IP地址,服务器有可能有子服务器,一个服务器下面可能有几个虚拟主机,同样的IP地址下面可能有多个服务器存在,所以还是需要把域名发给服务器,找到你想要的那台主机服务器>
-
Content-Length : 内容的长度(字节)
-
Content-Type :内容的类型
- text/html: html 文本,用于浏览器页面响应
示例 :Content-Type: text/html
-
application/x-www-form-urlencoded: (只能传输文本格式的)普通表单,encodedURL格式
示例:Retrofit 请求添加的header
813a562b76d1b0c69d72f15572606c9.png
在post 注解上面添加 注解@FromUrlEncoded 然后传递的参数注解用@Field ->他会把你传的这些参数拼节到boy里面
- multipart/form-data : 传参注解(@Part “photo” RequestBoay photo)多部分形式,一般用于传输包含二进制内容的多项内容
- application/json : json 形式,用于Web Api 的响应或者Post / Put 请求
- image/jpeg :单文件,用于Web Api 响应或者Post /Put 请求
- application/zip :单文件,用于Web Api 响应或者Post /Put 请求
-
Location : 重定向的目标URL
-
User-Agent : 用户代理
-
Range/Accept-Range:指定Body的内容范围 (当你的目标服务器支持你分段下载的时候可用)
-
Cookie/Set-Cookie :发送Cookie/设置Cookie
-
Authorzation : 授权信息
-
Accept: 授权客服端能接受的数据类型 ,如 text/ html ,application/json
-
Accept-Chartset: 客户端接受的字符集 如 utf-8
-
Accept-Encoding: 客户端接受的压缩编码类型 如 gzip
-
Content-Encoding: 压缩类型 如gzip
-
Cache
- Cache 和Buffer 区别 : Cache 缓存 Buffer 缓冲
-
Cache-Contorl: no-cache(可以缓存,但是当你再次使用这个资源时需要访问服务器自否是否已经失效了) no-store(不缓存) max-age(订了一个失效日期,在失效日期之前绝对可用)
-
Last-Medified
- If-Modified-Since
-
Etag
- If-None-Math
-
Cache-Control:prvate/public
网友评论