request ——是對http請求報文概念的具體實現
請求報文的結構圖
根據結構圖去閱讀原始碼能很好的理解某些屬性的真實意義。
我們看一下原始碼。
public
final
class
request
//返回設定的url
//返回設定的方法 get或post
public string method()
//返回所有的頭部物件(這裡的物件可以理解為乙個鍵值對)
public headers headers()
//返回頭部名稱為name的資訊
public string header(string name)
//返回頭部所有名稱為name的資訊
public listheaders(string name)
//返回請求體
public requestbody body()
//返回設定的請求標籤
public object tag()
//根據自身設定的引數重新構造物件
public builder newbuilder()
//根據在頭部設定的與快取有關的資訊,返回快取控制器,
public cachecontrol cachecontrol()
//是否用的https協議
/*** 接下來就是builder設計模式
* okhttp用的比較多的設計模式
* 對builder模式不了解的,先去了解下。這裡概括一下builder模式:類的某些字段無法通過自身去賦值,需要委託給其他類去賦值。
*/public
static
class
builder
//根據resquest已設定的引數重新建立物件
builder(request request)
//設定httpurl,這裡就省去了對string url 內容的封裝。
//設定url, 這裡需要對string url的內容封裝成httpurl。
}//設定url,其實內部的實現與string url相同。
public builder url(url url)
//設定乙個頭部資訊(鍵值對的形式),並將與此name相同的頭部資訊全部清除。
public builder header(string name, string value)
//新增乙個頭部資訊(鍵值對的形式),這裡這是不用清除其他頭部資訊
public builder addheader(string name, string value)
//清除所有頭部名稱為name的資訊
public builder removeheader(string name)
//設定頭部物件
public builder headers(headers headers)
//設定將快取控制器裡面設定的資訊新增到頭部
public builder cachecontrol(cachecontrol cachecontrol)
//設定get方法並且請求體為null
public builder get()
//設定post方法並且請求體不能為null
public builder post(requestbody body)
//設定方法,如果方法有請求體,必須設定請求體
}//設定當前請求體的標籤
public builder tag(object tag)
//建立request物件。
public request build() }}
通過上面的注釋分析我們知道:
request類主要配置網路請求的請求體,
相關引數有httpurl、method、headers、requestbody、cachecontrol。
對於除method以外的其他引數類,都是對網路請求的請求體相關資訊的封裝。
我們後面會解釋headers、requestbody、cachecontrol三個類。
OkHttp3原始碼解析(二)OkHttp基本流程
首先使用okhttp發起乙個非同步請求,以此先簡單分析okhttp的大致流程。okhttp使用 okhttp流程主要類 功能 使用建造者模式初始化連線池,dispatcher等,為了節約資源推薦使用單列模式建立okhttpclient物件,維護執行緒池比較耗資源。http請求所需的url,請求方法等...
OkHttp3原始碼解析
compile com.squareup.okhttp3 okhttp 3.6.0 最新版本 okhttp的最底層是使用socket,而不是urlconnection,它通過platform的class.forname 反射獲得當前runtime使用的socket庫。okhttp3使用場景特點 資料...
OkHttp3原始碼(三) Header
由於header類是之前已經分析好的,所以這裡直接拿過來就可以了。之所以之前沒有發布這篇部落格是因為在學習header類之前,首先要明白http首部資訊的相關欄位及內容,關於這個如果還不太了解請參看http首部的字段及相應的取值內容 header類屬性 通過字串資料的方式維護資料,用於實現獲取資料的...