说到Retrofit首先应该想到的是他的Builder 建造者模式 那么我们就从这个点开始进行源码分析 不说多了 老规矩先上图
这个构造函数 相信会使用Retrofit的人 都应该用过吧 这里显示了一个Platform.get() 方法 我们先去进去瞅一瞅
返回了一个实例 是从findFlatform这个方法里面返回的
这里面可以看出这里应该是一个适配用的方法 判断是哪个平台 接下来我们顺着源码继续往下看
这个方法大家也不会陌生吧 用于发起http请求的客户端 需要传入Okhttp的client, 然后callFactory 里面传入的是okhttp的工厂 而它的参数缺是一个检测是否为空的方法 我们就先去这个方法里面看下
这只是一个判空的方法 接下来我们继续下面走
第一个baseUrl 方法 先是判空 然后通过HttpUrl 这个类解析 如果为空则解析失败抛出异常 反之则进入第二个baseurl这个方法里面 这个PathSegments 返回的事一个路径段列表 (这个列表 不会为空即使它包含了空字符串 源码注释)然后对这个列表进行判断 是否为空 如果为空 则抛异常 反之则返回这个URL 继续往下看
这几个方法 返回的都是一些转换工厂类 适配器啥的 不详细说 好了Builder类 源码解析 就到此为止 我们接下来去分析 Retrofit 的其他源码