Retrofit源碼分析一 概覽

Retrofit源碼分析一 概覽

  • Retrofit的本質和與Okhttp的關係 ​ 說到Retrofit,免不了要提起Okhttp,由於兩者一般是綁定到一塊兒使用的。那麼咱們首先要明確一點Retrofit並非一個網絡請求框架,而是一個對網絡請求框架(也就是Okhttp)的封裝。兩者都是Squire公司的開源框架,Retrofit並不能脫離OKhttp,由於底層的網絡訪問是由Okhttp來實現的。說到對網絡請求的封裝,這裏小夥伴們可能會有一些疑問,什麼叫作對網絡請求的封裝?這裏咱們先簡單的貼一些代碼來看一下
//登陸
    @FormUrlEncoded
    @POST("${BuildConfig.EXTRA_URL}account/login.do")
    fun login(@Field("username") userName: String, @Field("password") pwd: String, @Field("clientType") clientType: Int): Observable<HttpResultEntity<UserEntity>>
複製代碼

在上面這個Kotlin編寫的的網絡請求方法中,@FormUrlEncoded@POST("${BuildConfig.EXTRA_URL}account/login")@Field("username")@Field( "password") @Field("clientType")Observable<HttpResultEntity> 這些都是對網絡請求的封裝。這裏須要知道的是,對網絡請求的封裝包括兩個方面:1. 對請求參數的封裝2. 對網絡返回結果的封裝。上面列出來的幾項中除了Observable<HttpResultEntity> 以外都是對請求參數的封裝,即便是對Retrofit不太瞭解的同窗應該也是能夠很輕鬆的看懂一些參數表明的意義,好比**@POST表明這個網絡請求採用post方式,@Field("username")表明post請求域中要包含一個username的請求參數。而與之相對應的Observable<HttpResultEntity>**就是對網絡返回結果的封裝,對Rxjava瞭解的同窗應該明白,Retrofit把網絡返回的原始數據包裝成了一個Observable,便於咱們的開發。java

  • Retrofit流程分析 Retrofit的流程圖以下所示
    Retrofit流程圖
    關於更加詳細的流程咱們以後的章節會進行分析,你們先看個大概,內心有個印象就行。等咱們對整個Retrofit的源碼分析結束以後,相信你們對這幅圖會有更加深刻的認知。
相關文章
相關標籤/搜索