Retrofit是RESTful的HTTP網絡請求框架的封裝。
網絡請求的工作本質上是okHttp完成的,而retrofit僅負責網絡請求接口的封裝。
使用步驟:
1.創建描述網絡請求的接口
在內部通過注解描述網絡請求的參數和配置網絡請求參數。
在這個方法內定義了一個getInService()方法,返回值是個Call類型的泛型,他把表示的是接收數據的類在內部定義了個Bean, 。
這就是第一步,定義一個接口,然后再接口中定義一個方法和相應的注解。
其實第一部非常關鍵,因為Retrofit內部會通過動態代理的模式將我們的接口以及注解轉換成一個http請求,最后在去執行http請求。還有一點就是接口中的每一個方法還有他的參數都需要使用注解來標注。
2.創建retrofit實例
一個Retrofit他完整的url包含兩部分,一個是在baseUrl中,還有一個是在接口中通過注解設置的。
addConverterFactory添加一個數據解析的工廠,由這個數據解析的工廠生產數據解析器,用來解析服務器解析給我們的數據
addCallAdapterFactory添加網絡請求適配器的工廠,其實作用都是一樣的,通過工廠模式生產我們的網絡請求適配器。因為Retrofit支持多種網絡請求適配器的方式,比如Java8,RxJava等等,這時候系統就會根據我們需要的 場景選擇不同網絡請求的適配器。
3.創建網絡請求接口實例并配置網絡請求參數
調用Retrofit的create方法,并將前面的接口傳進來,其實就是獲取前面接口定義好的一個對象,然后調用接口中定義好的方法來獲取我們的Call對象。這個Call對象非常重要,它是用于發送網絡請求所需要的。
4.發送網絡請求?
在這里模仿了一個異步網絡請求的方法,他的請求方法和okhttp是一致的。因為Retrofit網絡請求本質上都是由okhttp來做的,Retrofit只是對我們網絡請求的一個接口進行一個封裝。(包括對參數的一個設置,頭部信息,url等等)
5.處理服務器返回的數據
通過callback接口返回兩個方法,在成功或失敗的方法內做出相應的處理