okhttp實(shí)現(xiàn)原理

主要參與的是 OkHttpClient、request焕梅、call、RealCall卦洽、dispatcher丘侠、interceptors、response

通過builder創(chuàng)建OkHttpClient對象 設(shè)置一些屬性 不設(shè)置的話會(huì)有默認(rèn)值 舉個(gè)例子的話 就有一些什么超時(shí)時(shí)間之類的 其實(shí)也能給設(shè)置一些攔截器逐样、比如我們改的打印日志的東西
然后創(chuàng)建一個(gè)請求 就是request 包含你的請求地址 請求方式 header body 然后把這個(gè)請求變成call 通過newCall方法
然而實(shí)際上 newCall 里面就會(huì)調(diào)用realcall的newrealcall方法 realcall是call的實(shí)現(xiàn)類 call其實(shí)是個(gè)接口
它里面會(huì)有一些 執(zhí)行請求的方法 取消的方法 還有請求結(jié)束的狀態(tài) 等等 然后realcall實(shí)現(xiàn)了他的具體方法
比較重要的就是 execute和enqueue方法 前者是同步后者是異步 然后里面實(shí)際調(diào)用的client調(diào)用dispatcher的相應(yīng)execute與enqueue方法 dispatcher里面有一些 裝請求的隊(duì)列 包括同步的正在執(zhí)行的等待執(zhí)行的 還有異步請求用到的線程池
大體邏輯就是 如果是同步請求 就直接把請求裝到runningSyncCalls里面
在這個(gè)請求方法之外 就是關(guān)鍵的責(zé)任鏈調(diào)用了 無論哪種請求都會(huì)調(diào)用同一個(gè)啟動(dòng)責(zé)任鏈的方法 getResponseWithInterceptChain
它里面就是各種攔截器的鏈路執(zhí)行了 主要由 RetryAndFollowUpInterceptor 是重連重定向攔截器 還有BridgeInterceptor 用于把我們寫的request變成服務(wù)器接受的請求 反過來也一樣 然后ConnectInterceptor 負(fù)責(zé)連接 CacheInterceptor 負(fù)責(zé)緩存 負(fù)責(zé)網(wǎng)絡(luò)設(shè)置的networkInterceptor 和最終請求的Call ServerInterceptor 最終返回請求結(jié)果 response 異步的話 是根據(jù)正在執(zhí)行的隊(duì)列有沒有空余 沒有就放到等待隊(duì)列 剩下差不多 同樣的責(zé)任鏈

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市打肝,隨后出現(xiàn)的幾起案子脂新,更是在濱河造成了極大的恐慌,老刑警劉巖粗梭,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件争便,死亡現(xiàn)場離奇詭異,居然都是意外死亡断医,警方通過查閱死者的電腦和手機(jī)滞乙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鉴嗤,“玉大人斩启,你說我怎么就攤上這事∽砉” “怎么了兔簇?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我垄琐,道長边酒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任狸窘,我火速辦了婚禮墩朦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翻擒。我一直安慰自己氓涣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布韭寸。 她就那樣靜靜地躺著春哨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恩伺。 梳的紋絲不亂的頭發(fā)上赴背,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音晶渠,去河邊找鬼凰荚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褒脯,可吹牛的內(nèi)容都是我干的便瑟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼番川,長吁一口氣:“原來是場噩夢啊……” “哼到涂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颁督,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤践啄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后沉御,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屿讽,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年吠裆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伐谈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡试疙,死狀恐怖诵棵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祝旷,我是刑警寧澤非春,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布柱徙,位于F島的核電站,受9級特大地震影響奇昙,放射性物質(zhì)發(fā)生泄漏护侮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一储耐、第九天 我趴在偏房一處隱蔽的房頂上張望羊初。 院中可真熱鬧,春花似錦什湘、人聲如沸长赞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽得哆。三九已至,卻和暖如春哟旗,著一層夾襖步出監(jiān)牢的瞬間贩据,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工闸餐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饱亮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓舍沙,卻偏偏與公主長得像近上,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子拂铡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容