xloger
2019-08-12 11:25:22 +08:00
这是封装程度不同的原因。楼主所说的保存 cookies,我这边创建 okHttpClient 的相关代码如下:
val inDiskCookieStore = InDiskCookieStore(XInit.applicationContext)
private var cookieHandler: CookieManager = CookieManager(inDiskCookieStore, CookiePolicy.ACCEPT_ALL)
private val okHttpClient = OkHttpClient.Builder()
.cookieJar(JavaNetCookieJar(cookieHandler))
InDiskCookieStore 是我自己创建的,cookieJar 和 cookieManager 的作用感兴趣可以自行了解,直接使用 okhttp 自己实现的这两个类即可。而 InDiskCookiesStore 里我做了什么呢,就是继承了 CookieStore 接口,实现了用 SharedPreferences 持久化存储 cookies 而已。
这个流程复杂么?不算复杂但是对于新手的确是繁琐了点。这个流程有必要么?我觉得是有的,不然一个网络库凭啥帮你实现具体的持久化存储。
而如果想像其他框架一样简单地一句话调用,网上肯定有很多基于 okhttp 封装的简易库,可以实现一行代码实现,内部原理也跟上面的实现差不多。
所以我觉得,是应用场景与目标不同,不存在优劣与繁琐的问题。