說到Retrofit,免不了要提起Okhttp,由於兩者一般是綁定到一塊兒使用的。那麼咱們首先要明確一點Retrofit並非一個網絡請求框架,而是一個對網絡請求框架(也就是Okhttp)的封裝。兩者都是Squire公司的開源框架,Retrofit並不能脫離OKhttp,由於底層的網絡訪問是由Okhttp來實現的。說到對網絡請求的封裝,這裏小夥伴們可能會有一些疑問,什麼叫作對網絡請求的封裝?這裏咱們先簡單的貼一些代碼來看一下java
//登陸 @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<UserEntity>> 這些都是對網絡請求的封裝。這裏須要知道的是,對網絡請求的封裝包括兩個方面:1. 對請求參數的封裝;2. 對網絡返回結果的封裝。上面列出來的幾項中除了Observable<HttpResultEntity<UserEntity>> 以外都是對請求參數的封裝,即便是對Retrofit不太瞭解的同窗應該也是能夠很輕鬆的看懂一些參數表明的意義,好比@POST表明這個網絡請求採用post方式,@Field("username")表明post請求域中要包含一個username的請求參數。而與之相對應的Observable<HttpResultEntity<UserEntity>>就是對網絡返回結果的封裝,對Rxjava瞭解的同窗應該明白,Retrofit把網絡返回的原始數據包裝成了一個Observable,便於咱們的開發。網絡
關於更加詳細的流程咱們以後的章節會進行分析,你們先看個大概,內心有個印象就行。等咱們對整個Retrofit的源碼分析結束以後,相信你們對這幅圖會有更加深刻的認知。框架