Retrofit --A type-safe HTTP client for Android and Java
- WHY USE RETROFIT?
- 為什么寫這個:
- Retrofit不僅效率高,android下一步可能需要使用mvp或mvm開發(fā),
然后,Retrofit配合Rxjava或RxAndroid可能跟方便的進(jìn)行mvp或mvm開發(fā)。
Download
- Gradle:
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
創(chuàng)建Engine接口實(shí)現(xiàn)HTTP API轉(zhuǎn)換
- 以android C端的加油卡為例:
public interface Engine {
// 加油卡列表
@POST("user/fuelcard/list")
Call<RefuleListResponse> loadFuelcardDatas();
// 刪除加油卡
// 官方文檔沒有說明,需要通過@FormUrlEncoded和@Field注解發(fā)送請求參數(shù),也可以在@body里傳cardId="xx"
@FormUrlEncoded
@POST("user/fuelcard/delete")
Call<BaseResponse> delFuelcard(@Field("cardId") String cardId);
}
- 可以使用Observable配合RxJava進(jìn)行事件傳遞
@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);
- 需要添加Retrofit適配RxJava的依賴
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
- 設(shè)置header
@Headers("Cache-Control: max-age=640000")
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
- 更多請見官網(wǎng)
使用Retrofit生成接口Engine的實(shí)現(xiàn)
- 以android C端的加油卡為例:
// 如果需要按照不同模塊創(chuàng)建不同的engine,需要考慮在什么地方初始化engine;
Engine mEngine = new Retrofit.Builder()
.baseUrl(HttpMethod.HTTP_URL + "/")
.addConverterFactory(GsonConverterFactory.create())
.build().create(Engine.class);
- addConverterFactory可以自定義轉(zhuǎn)換器
- 官網(wǎng)說明:(來源: http://square.github.io/retrofit/)
Converters can be added to support other types.
Six sibling modules adapt popular serialization libraries for your convenience.
- Gson: com.squareup.retrofit:converter-gson
Jackson: com.squareup.retrofit:converter-jackson
Moshi: com.squareup.retrofit:converter-moshi
Protobuf: com.squareup.retrofit:converter-protobuf
Wire: com.squareup.retrofit:converter-wire
Simple XML: com.squareup.retrofit:converter-simplexml
-
這里用了Gson,需要添加converter-gson依賴
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
此為blog備份,原地址:http://blog.yzapp.cn/Retrofit.html