购买源码的网站,网站页面设计公司推荐,怎么重新网站做301,建设网站要注册公司吗安全的连接 OkHttpClient: OkHttpClient: 1.线程调度
2.连接池,有则复用,没有就创建
3.interceptor
4.interceptor
5.监听工厂
6.是否失败重试
7.自动修正访问,如果没有权限或认证 8是否重定向 followRedirects
9.协议切换时候是否继续重定向
10.Cookie jar 容器 默认… 安全的连接 OkHttpClient: OkHttpClient: 1.线程调度
2.连接池,有则复用,没有就创建
3.interceptor
4.interceptor
5.监听工厂
6.是否失败重试
7.自动修正访问,如果没有权限或认证 8是否重定向 followRedirects
9.协议切换时候是否继续重定向
10.Cookie jar 容器 默认返回空的 11.本地缓存
12 dns 域名解析为dns地址 通过原生方式,根据域名获取DNS/IP地址
13.代理服务器 直连,http,Socket
14.代理的select 默认直连
15.代理授权
16.sslsocket工厂
17.x509 证书验证器,验证合法性
18.连接标准 比如版本 http 1.1 2.0 严格 - 一般 - 基本无限制 不加密传输
19.支持的协议 不加密的HTTP2
20 21 22:
证书验证相关 如果配置错误则会打印报错 多证书 23. call连接超时
24. 网络连接超时
25.读取超时
26.写入超时
27.心跳频率 websocket / http 2 enqueue 是一个接口 Call client 通用配置等参数
Request 请求相关参数,初始的request
forwebsocket websocket 服务器主动发消息,推送数据,通过http连接 RealCall Call接口实现类 1 跟踪程序的错误
2 监听所有事件 比如连接 断开 等 enqueue: 执行client.dispatcher.enqueue(AsyncCall xxx) dispatcher 线程调度用的Executor enqueue: 尝试找到有没有当前url的主机
传入AsyncCall 添加到队列,双向队列,准备还未执行的操作 执行已经准备好的Call 取出所有的call 并且取出的值小于设定的值,添加到正在执行的call
遍历执行 executeOn,则执行runnable executee() runnable,发生了线程切换 run 获取相应 getResponseWithInterceptorChain ,然后传给回调 execute: 同步执行, 直接调用getResponseWithInterceptorChain getResponseWithInterceptorChain:
将各种拦截器添加到集合中 创建一个拦截器的chain 链式工作
每一个都有前置后置任务 1 第一个拦截器 ,连接错误等进行重置连接 请求,然后重试 判断是哪种错误 找到一个可用连接 如果是重定向等,继续重试 成功则返回结果,否则继续重试 复制一份执行,然后调用下一个链条 2:将已经准备好的连接进行发送和过滤判断
将参数 content-length等进行填充 自动进行压缩 / 解压缩 gzip 3.缓存拦截器 有缓存直接返回 缓存类型: 没有则进行缓存 4.连接拦截器 init coedc:编码/解码器,然后拼接成Exchange
找到可用健康的连接 先拿到可用连接 然后判断状态,最多5种方式拿到 取消掉的 有没有已经建立 结果为空则执行,把call放到池里的连接 多复用,判断是否可用 拿到一个连接 判断有没有超限,判断是否是同一个主机TCP端口以及加密方式和代理等配置是否相同, 判断代理 判断 http2 判断证书 如果已经拿到连接,直接返回,否则再进行重试 复用已经使用过且相等地址端口证书的连接 5次连接: 1有连接直接复用, 2拿不到则在连接池取一个不多重复用的连接, 3在拿一个多复用连接, 4自己创建一个连接, 5重新取池里多重复用的连接 5.往服务器发送数据拦截器
发请求,读相应 运行 读响应 然后反式调用上一个拦截器