Retrofit是RESTful的HTTP網絡請求框架的封裝。
網絡請求的工作本質上是okHttp完成的孤个,而retrofit僅負責網絡請求接口的封裝剃允。
使用步驟:
1.創(chuàng)建描述網絡請求的接口
在內部通過注解描述網絡請求的參數(shù)和配置網絡請求參數(shù)。
在這個方法內定義了一個getInService()方法齐鲤,返回值是個Call類型的泛型斥废,他把表示的是接收數(shù)據的類在內部定義了個Bean, 给郊。
這就是第一步牡肉,定義一個接口,然后再接口中定義一個方法和相應的注解淆九。
其實第一部非常關鍵统锤,因為Retrofit內部會通過動態(tài)代理的模式將我們的接口以及注解轉換成一個http請求毛俏,最后在去執(zhí)行http請求。還有一點就是接口中的每一個方法還有他的參數(shù)都需要使用注解來標注饲窿。
2.創(chuàng)建retrofit實例
一個Retrofit他完整的url包含兩部分拧抖,一個是在baseUrl中,還有一個是在接口中通過注解設置的免绿。
addConverterFactory添加一個數(shù)據解析的工廠,由這個數(shù)據解析的工廠生產數(shù)據解析器擦盾,用來解析服務器解析給我們的數(shù)據
addCallAdapterFactory添加網絡請求適配器的工廠嘲驾,其實作用都是一樣的,通過工廠模式生產我們的網絡請求適配器迹卢。因為Retrofit支持多種網絡請求適配器的方式辽故,比如Java8,RxJava等等腐碱,這時候系統(tǒng)就會根據我們需要的 場景選擇不同網絡請求的適配器誊垢。
3.創(chuàng)建網絡請求接口實例并配置網絡請求參數(shù)
調用Retrofit的create方法,并將前面的接口傳進來症见,其實就是獲取前面接口定義好的一個對象喂走,然后調用接口中定義好的方法來獲取我們的Call對象。這個Call對象非常重要谋作,它是用于發(fā)送網絡請求所需要的芋肠。
4.發(fā)送網絡請求?
在這里模仿了一個異步網絡請求的方法,他的請求方法和okhttp是一致的遵蚜。因為Retrofit網絡請求本質上都是由okhttp來做的帖池,Retrofit只是對我們網絡請求的一個接口進行一個封裝。(包括對參數(shù)的一個設置吭净,頭部信息睡汹,url等等)
5.處理服務器返回的數(shù)據
通過callback接口返回兩個方法,在成功或失敗的方法內做出相應的處理