[TOC]
## 请求报文
![](https://img.kancloud.cn/4e/94/4e943538671042b827dd283b9175abfd_583x224.png)
![](https://img.kancloud.cn/2a/83/2a83f6c22d73f549a48cf11aab9ad185_897x529.png)
### 请求行
{请求方法} + {URL字段} + {HTTP协议版本} 们用空格分隔。
例如,GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
### 请求头部
由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
请求头说明Host接受请求的服务器地址,可以是IP:端口号,也可以是域名User-Agent发送请求的应用程序名称Connection指定与连接相关的属性,如Connection:Keep-AliveAccept-Charset通知服务端可以发送的编码格式Accept-Encoding通知服务端可以发送的数据压缩格式Accept-Language通知服务端可以发送的语言
### 请求数据
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length
## 响应报文
![](https://img.kancloud.cn/44/2c/442c7e6839a7a49ec108c38989d83ccf_553x364.png)
![](https://img.kancloud.cn/87/32/8732a0e683d412fdf31ab1a5385f6a7a_629x295.png)
### 状态行
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
* 1xx:指示信息--表示请求已接收,继续处理。
* 2xx:成功--表示请求已被成功接收、理解、接受。
* 3xx:重定向--要完成请求必须进行更进一步的操作。
* 4xx:客户端错误--请求有语法错误或请求无法实现。
* 5xx:服务器端错误--服务器未能实现合法的请求。
常见状态代码、状态描述的说明如下。
* 200 OK:客户端请求成功。
* 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
* 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
* 403 Forbidden:服务器收到请求,但是拒绝提供服务。
* 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
* 500 Internal Server Error:服务器发生不可预期的错误。
* 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
### 响应头部
与请求头部类似,为响应报文添加了一些附加信息
响应头说明Server服务器应用程序软件的名称和版本Content-Type响应正文的类型(是图片还是二进制字符串)Content-Length响应正文长度Content-Charset响应正文使用的编码Content-Encoding响应正文使用的数据压缩格式Content-Language响应正文使用的语言
## 参考资料
[http题目](https://blog.csdn.net/yicixing7/article/details/79320821)
[结构明细](https://www.cnblogs.com/ldq2016/p/9055933.html)
- Android
- 四大组件
- Activity
- Fragment
- Service
- 序列化
- Handler
- Hander介绍
- MessageQueue详细
- 启动流程
- 系统启动流程
- 应用启动流程
- Activity启动流程
- View
- view绘制
- view事件传递
- choreographer
- LayoutInflater
- UI渲染概念
- Binder
- Binder原理
- Binder最大数据
- Binder小结
- Android组件
- ListView原理
- RecyclerView原理
- SharePreferences
- AsyncTask
- Sqlite
- SQLCipher加密
- 迁移与修复
- Sqlite内核
- Sqlite优化v2
- sqlite索引
- sqlite之wal
- sqlite之锁机制
- 网络
- 基础
- TCP
- HTTP
- HTTP1.1
- HTTP2.0
- HTTPS
- HTTP3.0
- HTTP进化图
- HTTP小结
- 实践
- 网络优化
- Json
- ProtoBuffer
- 断点续传
- 性能
- 卡顿
- 卡顿监控
- ANR
- ANR监控
- 内存
- 内存问题与优化
- 图片内存优化
- 线下内存监控
- 线上内存监控
- 启动优化
- 死锁监控
- 崩溃监控
- 包体积优化
- UI渲染优化
- UI常规优化
- I/O监控
- 电量监控
- 第三方框架
- 网络框架
- Volley
- Okhttp
- 网络框架n问
- OkHttp原理N问
- 设计模式
- EventBus
- Rxjava
- 图片
- ImageWoker
- Gilde的优化
- APT
- 依赖注入
- APT
- ARouter
- ButterKnife
- MMKV
- Jetpack
- 协程
- MVI
- Startup
- DataBinder
- 黑科技
- hook
- 运行期Java-hook技术
- 编译期hook
- ASM
- Transform增量编译
- 运行期Native-hook技术
- 热修复
- 插件化
- AAB
- Shadow
- 虚拟机
- 其他
- UI自动化
- JavaParser
- Android Line
- 编译
- 疑难杂症
- Android11滑动异常
- 方案
- 工业化
- 模块化
- 隐私合规
- 动态化
- 项目管理
- 业务启动优化
- 业务架构设计
- 性能优化case
- 性能优化-排查思路
- 性能优化-现有方案
- 登录
- 搜索
- C++
- NDK入门
- 跨平台
- H5
- Flutter
- Flutter 性能优化
- 数据跨平台