超文本传输协议
超文本/html
工作方式
get / url 请求获取相应报文
http://xxxxxxxxxxxx.com/user?xxx = xxx
协议类型 - 服务器地址 -路径 path
请求格式:
head / body
path路径进行处理资源
等同于报文请求:
GET: /users HTTP/1.1
Host:api.github.com
响应报文
请求方式:
GET (获取,一般没有body) 幂等
body体 GET,Retrofit则会报错
POST(增加/修改/删除数据)
有body体 幂等
name =xxx& xxx= xxx
DELETE(删除数据) 幂等
没有body
PUT(修改数据)
有body体 同POST 都是幂等
HEAD(获取信息):
没有Body
状态码:
1xx : 100 临时消息 ,101协议可切换 ,102 通过Upgrade : h2c 判断返回码
2XX: 200请求成功 status = 200 OK, 201创建成功
3XX: 301 重定向 资源迁移 会跳转到headrs的 Location的地址,
4XX: 服务端错误,404资源未找到, 401未授权
5XX: 500 服务器错误
Http状态码 | Http Status Code | Http状态码含义中文说明 |
---|---|---|
100 | 100 Continue100 | 请继续请求 |
101 | 101 Switching Protocols101 | 请切换协议 |
102 | 102 Processing102 | 将继续执行请求 |
|-----|--------------------------------------|-----------------------|
| 200 | 200 OK200 | 请求成功 |
| 201 | 201 Created201 | 请求已被接受,等待资源响应 |
| 202 | 202 Accepted202 | 请求已被接受,但尚未处理 |
| 203 | 203 Non-Authoritative Information203 | 请求已成功处理,结果来自第三方拷贝 |
| 204 | 204 No Content204 | 请求已成功处理,但无返回内容 |
| 205 | 205 Reset Content205 | 请求已成功处理,但需重置内容 |
| 206 | 206 Partial Content206 | 请求已成功处理,但仅返回了部分内容 |
| 207 | 207 Multi-Status207 | 请求已成功处理,返回了多个状态的XML消息 |
| 208 | 208 Already Reported208 | 响应已发送 |
| 226 | 226 IM Used226 | 已完成响应 |
|-----|---------------------------|-------------------|
| 300 | 300 Multiple Choices300 | 返回多条重定向供选择 |
| 301 | 301 Moved Permanently301 | 永久重定向 |
| 302 | 302 Found302 | 临时重定向 |
| 303 | 303 See Other303 | 当前请求的资源在其它地址 |
| 304 | 304 Not Modified304 | 请求资源与本地缓存相同,未修改 |
| 305 | 305 Use Proxy305 | 必须通过代理访问 |
| 306 | 306 (已废弃Switch Proxy306 | (已废弃请切换代理) |
| 307 | 307 Temporary Redirect307 | 临时重定向,同302 |
| 308 | 308 Permanent Redirect308 | 永久重定向,且禁止改变http方法 |
|-----|------------------------------------------------------------------|--------------------|
| 400 | 400 Bad Request400 | 请求错误,通常是访问的域名未绑定引起 |
| 401 | 401 Unauthorized401 | 需要身份认证验证 |
| 402 | 402 Payment Required | - |
| 403 | 403 Forbidden403 | 禁止访问 |
| 404 | 404 Not Found404 | 请求的内容未找到或已删除 |
| 405 | 405 Method Not Allowed405 | 不允许的请求方法 |
| 406 | 406 Not Acceptable406 | 无法响应,因资源无法满足客户端条件 |
| 407 | 407 Proxy Authentication Required407 | 要求通过代理的身份认证 |
| 408 | 408 Request Timeout408 | 请求超时 |
| 409 | 409 Conflict409 | 存在冲突 |
| 410 | 410 Gone410 | 资源已经不存在(过去存在) |
| 411 | 411 Length Required411 | 无法处理该请求 |
| 412 | 412 Precondition Failed412 | 请求条件错误 |
| 413 | 413 Payload Too Large413 | 请求的实体过大 |
| 414 | 414 Request-URI Too Long414 | 请求的URI过长 |
| 415 | 415 Unsupported Media Type415 | 无法处理的媒体格式 |
| 416 | 416 Range Not Satisfiable416 | 请求的范围无效 |
| 417 | 417 Expectation Failed417 | 无法满足的Expect |
| 418 | 418 I'm a teapot418 | 愚人节笑话 |
| 421 | 421 There are too many connections from your internet address421 | 连接数超限 |
| 422 | 422 Unprocessable Entity422 | 请求的语义错误 |
| 423 | 423 Locked423 | 当前资源被锁定 |
| 424 | 424 Failed Dependency424 | 当前请求失败 |
| 425 | 425 Unordered Collection425 | 未知 |
| 426 | 426 Upgrade Required426 | 请切换到TLS/1.0 |
| 428 | 428 Precondition Required428 | 请求未带条件 |
| 429 | 429 Too Many Requests429 | 并发请求过多 |
| 431 | 431 Request Header Fields Too Large431 | 请求头过大 |
| 449 | 449 Retry With449 | 请重试 |
| 451 | 451 Unavailable For Legal Reasons451 | 访问被拒绝(法律的要求) |
| 499 | 499 Client Closed Request499 | 客户端主动关闭了连接 |
|-----|----------------------------------------|---------------|
| 500 | 500 Internal Server Error500 | 服务器端程序错误 |
| 501 | 501 Not Implemented501 | 服务器不支持的请求方法 |
| 502 | 502 Bad Gateway502 | 网关无响应 |
| 503 | 503 Service Unavailable503 | 服务器端临时错误 |
| 504 | 504 Gateway Timeout504 | 网关超时 |
| 505 | 505 HTTP Version Not Supported505 | 服务器不支持的HTTP版本 |
| 506 | 506 Variant Also Negotiates506 | 服务器内部配置错误 |
| 507 | 507 Insufficient Storage507 | 服务器无法存储请求 |
| 508 | 508 Loop Detected508 | 服务器因死循环而终止操作 |
| 509 | 509 Bandwidth Limit Exceeded509 | 服务器带宽限制 |
| 510 | 510 Not Extended510 | 获取资源策略未被满足 |
| 511 | 511 Network Authentication Required511 | 需验证以许可连接 |
| 599 | 599 Network Connect Timeout Error599 | 网络连接超时 |
Header:
元数据
通过请求的url 解析dns地址
Host:给主机判断,请求哪个子服务器等
域名可以通过DNS解析,然后放到Host请求
Content-Length = number 数据长度,如果是二进制则不会准确,\n则会切断后面的数据,需要指定content-Length
Content-Type / text/html
ContentType-JSON ..
请求和相应JSON报文:
Retrofit:
FormBody 表单,对应Retrofit FormUrlEncoded,通过Field
类似于url拼接格式
FormBoundary 分割线,将多个数据进行切分,上传文件,或者二进制文件,可以通过这种方式
Retrofit 实例
不可以同FormEncoded同时使用,都是Form表单提交
image-jpeg
上传,下载文件, 上传/ 相应报文:
Chunked Transfer Encoding分快传输编码:
Location:
OkHttp自动进行重定向到返回的location的重定向
User-Agent 用户代理
Range / Accept-Range分段加载,通过Content-Length判断总大小,Content_Range bytes xx-xx /xx加载的当前进度 / 总进度
可以进行断点续传,多线程加载
其他HEADED 值
Cache 缓存:
缓存和缓冲
no-cache 不缓存
no-store
max-age
Last-Modufied 最后请求的一次标签,用于判断鉴定是否最新数据
Etag 指纹
REST:
架构风格
server 服务器架构 cs / bs
statelessness 无状态
cachebulity:可缓存
Layered :可选项
Code On:
Uninform interface:统一接口:
描述资源
资源修改
自描述信息 Content-Type
超媒体 以连接方法查看资源