java http

超文本传输协议

超文本/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

超媒体 以连接方法查看资源

相关推荐
小堃学编程1 小时前
计算机网络(十) —— IP协议详解,理解运营商和全球网络
网络·tcp/ip·计算机网络
IPFoxy6664 小时前
探索路由器静态IP的获取方式
网络·智能路由器
menge23334 小时前
VLAN:虚拟局域网
网络·智能路由器
GZ_TOGOGO4 小时前
【2024最新】华为HCIE认证考试流程
大数据·人工智能·网络协议·网络安全·华为
ZachOn1y5 小时前
计算机网络:计算机网络概述 —— 初识计算机网络
网络·计算机网络·知识点汇总·考研必备
三金121385 小时前
SpringIoC容器的初识
网络·网络协议·rpc
狼头长啸李树身6 小时前
眼儿媚·秋雨绵绵窗暗暗
大数据·网络·服务发现·媒体
SizeTheMoment7 小时前
初识HTTP协议
网络·网络协议·http
哲伦贼稳妥8 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
hgdlip9 小时前
如何快速切换电脑的ip地址
网络·tcp/ip·电脑