微信公众号:BoomDev
如有问题或建议请留言
最近更新:2018-10-13
随着工作年限的增加,自己的技术技能并没有得到相应的成长,30 岁的危机也就提前降临了,今天开始给自己立个 flag,把握现在,不让 30 岁的时候后悔现在的自己。
HTTP 到底是什么
- 浏览器地址栏输入网址,打开网页
- Android 中发送网络请求,返回对应内容
HTTP是什么:用于传输超文本的协议。以前是 HTML,现在也包括 Web API 的数据
HTTP 工作模型:客户端按需求组装 HTTP 报文,发送给服务器,服务器处理后得到响应报文,发回给客户端,客户端处理响应报文
URL -> HTTP 报文
请求报文:Request
请求行:
- method:GET/POST。。。
- path:/users
- HTTP version:/1.1
Headers:
- Host :api.github.com
- Content-Type:text/plain
- Content-Length:243
- 。。。
Body:
响应报文:
状态行:
- HTTP Version:1.1
- status code:200
- status message:OK
Headers:
- content-type:application/json;charset=utf-8
- cache-control:public
- etag:W/“07eecbgasdfasgu0uasdfyoaid28”
- content-encoding:gzip
Body:{…}
请求方法:
- GET:用于获取资源,不修改服务器数据,不发送 Body
- POST:用于增加和修改资源,发送内容放在 Body 里面
- PUT:用于修改资源,发送内容放在 Body 里面
- DELETE:用于删除资源,不发送 Body
- HEAD:和 GET 方法完全相同,返回的响应中没有 Body
Status Code 状态码
- 1xx:临时性消息。100(继续发送)、101(正在切换协议)
- 2xx:成功。200(OK)、201(创建成功)
- 3xx:重定向。301(永久移动)、302(临时移动)
- 4xx:客户端错误。400(请求错误)、401(认证失败)
- 5xx:服务器错误。500(服务器内部错误)
Host:目标主机。不是在网络上用于寻址的,而是在目标服务器上用于定位子服务器的
Content-Type:指定 Body 类型,主要四类:
- text/html:请求 web 页面时返回响应的类型,Body 返回 html 文本。
- x-www-form-urllencoded:Web 页面纯文本表单的提交方式。
- multitype/form-data:Web 页面含有二进制文件时的提交方式
- application/json,image/jpeg…:单项内容(文本和非文本都可以)
Range/Accept-Range
按范围取数据
Accept-Range:bytes
响应报文中出现,表示服务器支持按字节来获取范围数据Range:bytes=<start>-<end>
请求报文中出现,表示要取哪段数据Content-Range:<start>-<end>/total
响应报文中出现,表示发送的是哪段数据
作用:断点续传,多线程下载
TCP 连接建立时的「三次(三向)握手」
- 客户端:「我要向你发送消息」
- 服务器:「好的。我要向你发送消息」
- 客户端:「好的」
TCP 连接关闭时的「四次挥手」
- 客户端:「我不再给你发送消息」
- 服务端:「好的」
- 服务端:「我不再给你发送消息」
- 客户端:「好的」
我是一名有备而来的 Android 工程师
微信公众号:BoomDev
欢迎关注我、一起学习、一起进步!