OkHttp
核心
Request
- methods: get, post, put, delete, patch, head
- HttpUrl: schema, host, port, url, queryNamesAndValues
- Headers: namesAndValues
- RequestBody
- MediaType
- mediaType
- type: text, image, audio, video, application,
extension-token - subtype: plain/xml/html/css, png/jepg/gif, mp3/wav, avi/x-mepg/mpeg4, octet-stream/pdf/vnd.android.package-archive
- charset
- contentLength
- MultipartRequestBody
- boundary: BeteString
- contentType/mediaType
- partHeaders: List
- partBodies: List
- MultipartBuilder
- mixed: multipart/mixed
- alternative: multipart/alternative
- digest: multipart/digest
- parallel: multipart/parallel
- form: multipart/form-data
- MediaType
- CacheControl
- force_network: 无缓存, 每次从网络获取
- force_cache: 强制缓存
- no-cache, no-store, max-age, s-maxage, private, public, must-revalidate, mxa-stale, min-refresh, only-if-cached, on-transform
- javaNetUrl
javaNetUri
Response
拦截器(责任链)
- RealInterceptorChain
- 用户自定义,比较常用的就是日志打印和进度提示
- RetryAndFollowUpInterceptor()
- 处理失败重试和重定向
- BridgeInterceptor
- 将用户请求加工成网络请求(添加一些请求头)
- 将网络响应加工成用户响应
- CacheInterceptor
- 若不使用网络(only-if-cached),则尝试从缓存返回用户请求;
- 网络请求回来之后,更新原有缓存(DiskLruCache);
- ConnectInterceptor
- 发起与服务器的连接,从缓存池中找可以复用的连接,底层使用的是 socket
- networkIntercepters
- CallServerInterceptor
- 通过 okio 发起请求、读取响应,然后加工返回
调度器
- 最大连接 64
- 每个 ip 最多 5 个连接
- 就绪的请求
- 正在执行的同步请求
- 正在执行的异步请求
- 线程池以及空闲回调
- 核心线程 0、最大线程数 int 最大值、存活时间 60s、