okHttp源码解析------待续
生活随笔
收集整理的這篇文章主要介紹了
okHttp源码解析------待续
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
看該篇文章前首先要熟悉okHttp的使用,建議先讀OkHttp的簡單使用
本文的源碼解析參考鏈接:okhttp3總和解析
1.從URL請求處理開始分析
由異步將請求加入調度方法開始引入正題:
getClient().newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {} }); /*** Prepares the {@code request} to be executed at some point in the future.*/@Override public Call newCall(Request request) {return new RealCall(this, request);} @Override public void enqueue(Callback responseCallback) {enqueue(responseCallback, false);}void enqueue(Callback responseCallback, boolean forWebSocket) {synchronized (this) {if (executed) throw new IllegalStateException("Already Executed");executed = true;}client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));}由源碼上的調用順序,我們將步驟轉化為以下的幾個技術點:
?
由以上的使用okhttp請求的調用代碼,可以看到最終的請求時通過dispatcher來完成的。
2.Dispatcher調度者
Dispatcher進行線程分發,有兩個方法,一個是普通的單線程,也就是線程阻塞的方式請求;另一種就是通過隊列進行并發任務的分發和回調,下面主要分析第二種:
?就是想到生成一個可緩存的線程池,實現高并發、低阻塞的任務調度。
?
3.Interceptor攔截器
攔截器主要用來觀察、修改、以及可能短路的清除輸出、和響應的回來。
通常用來添加、移除或者轉換請求或者xiangying的頭部信息。比如將域名替換為ip地址,將請求頭中添加host屬性,也可以添加我們應用中的一些公共參數,比如設備id、版本號等等。
http://www.jianshu.com/p/2710ed1e6b48?
?
4.緩存策略
?
4.Socket管理(StreamAllocation)
?
5.HTTP請求序列化/反序列化
?
6計算機常識
?
轉載于:https://www.cnblogs.com/could-deng/p/6744974.html
總結
以上是生活随笔為你收集整理的okHttp源码解析------待续的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性代数第四章--向量组的线性相关性
- 下一篇: NS方程和组分方程