okhttp3.11.0 源码分析-整体流程

作者: shenshizhong | 来源:发表于2018-10-14 22:40 被阅读19次

一、 这是执行过程中主要的类,之间存在调用关系。把这个几个类的源码搞清楚了就差不多了。后面会在其他文章中根据这些类作相应的分析。

1、OkHttpClient   
       1、Internal
       2、Builder
               1、Dispatcher
               2、EventListener
               3、ConnectionPool
                           1、RouteDatabase
        3、Util      
        4、PlatForm
                1、BasicTrustRootIndex
        5、CertificateChainCleaner
        6、CertificatePinner
        7、Request
                1、Headers
                         1、Builder
                2、HttpUrl
         8、RealCall
                  1、RetryAndFollowUpInterceptor
                            1、StreamAllocation
                                     1、RouteSelector
                            2、Address
                            3、Response
                  2、EventListener
                  3、BridgeInterceptor
                  4、CacheInterceptor
                  5、ConnectInterceptor
                  6、CallServerInterceptor
                  7、RealInterceptorChain

二、使用方式

1、构造OkHttpClient

 OkHttpClient client = new OkHttpClient();

2、构造Request

Request request = new Request.Builder()
        .url(url)
        .build();

3、同步请求

Response response = client.newCall(request).execute()

4、异步请求

client.newCall(request).enqueue(callback);

三、 通过一张总的流程图就可以对流程有清晰的认识

okhttp3.0流程图.png
  • OkHttpClient 通过 newCall() 为Request 创建 Call
  • RealCall 是 Call 的具体实现,分别进行同步或者异步的处理,同步的话直接执行,异步的话通过Dispacher 进行处理。
  • 最终通过getResponseWithInterceptorChain() 调用 RealInterceptorChain 中的process() 返回 Response

总结

  • 所有涉及的关键类
  • 使用方式
  • 通过流程图了解实现过程

如果对你有一点点帮助,那是值得高兴的事。:)
欢迎长按下图 -> 识别图中二维码 或者 扫一扫 关注我的公众号:

Android 大咖秀.png

我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad

相关文章

网友评论

    本文标题:okhttp3.11.0 源码分析-整体流程

    本文链接:https://www.haomeiwen.com/subject/mauvaftx.html