一、開始使用這個包時候不習慣,以爲api用起來很彆扭,無論是Request okhttpClient formBody只要是設置啥,就必須使用類裏面的Builder類,而後一個方法接受一個參數,不停地調用每個方法來接受一個參數進行屬性設置,以前的py requests都是一個方法接受完各類參數就了事了。api
二、OkHttpClient類兩個構造方法。默認構造方法調用下面的有參構造方法,能夠傳一個構造好的Builder的實例到OkHttpClient類進行實例化。ide
但通常是OkHttpClient.Builder().funa(xx).funb(yy).func(zz).build()的方式來獲得一個OkHttpClient.類型的實例。ui
Builder類是OkHttpClient類裏面的一個靜態類,因此才能用OkHttpClient.Builder()這種方式,而後就是用Bulider類裏面的方法進行各類設置了。能連續的進行.funa(xx).funb(yy).func(zz)這種鏈式操做,是他在設置屬性後,還返回了自身(this)。進行了OkHttpClient.Builder().funa(xx).funb(yy).func(zz)這一系列操做後獲得的是一個Bulider類的實例,這還不是OkHttpClient類的實例。最後執行builder實例的buid()方法,把自身傳到OkHttpClient的構造方法了,這才獲得的是OkHttpClient的實例。this
三、okhttp這個包裏面的各個類基本都是有個類中類Builder,而後調用Bulider的各類方法進行設置,最後執行build,把builder實例自身傳到Builder的上級類的構造方法。只有大體搞清楚了才能好好的調用他的api,否則會不知道到了哪一步獲得的是什麼類型的實例了,和爲何能夠連續鏈式操做。spa
Bulider類3d