Posts OkHttp
Post
Cancel

OkHttp

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
  • 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、
This post is licensed under CC BY 4.0 by the author.