Retrofit --A type-safe HTTP client for Android and Java
- WHY USE RETROFIT?
- 为什么写这个:
- Retrofit不仅效率高,android下一步可能需要使用mvp或mvm开发,
然后,Retrofit配合Rxjava或RxAndroid可能跟方便的进行mvp或mvm开发。
Download
- Gradle:
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
创建Engine接口实现HTTP API转换
- 以android C端的加油卡为例:
public interface Engine {
// 加油卡列表
@POST("user/fuelcard/list")
Call<RefuleListResponse> loadFuelcardDatas();
// 删除加油卡
// 官方文档没有说明,需要通过@FormUrlEncoded和@Field注解发送请求参数,也可以在@body里传cardId="xx"
@FormUrlEncoded
@POST("user/fuelcard/delete")
Call<BaseResponse> delFuelcard(@Field("cardId") String cardId);
}
- 可以使用Observable配合RxJava进行事件传递
@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);
- 需要添加Retrofit适配RxJava的依赖
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
- 设置header
@Headers("Cache-Control: max-age=640000")
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
- 更多请见官网
使用Retrofit生成接口Engine的实现
- 以android C端的加油卡为例:
// 如果需要按照不同模块创建不同的engine,需要考虑在什么地方初始化engine;
Engine mEngine = new Retrofit.Builder()
.baseUrl(HttpMethod.HTTP_URL + "/")
.addConverterFactory(GsonConverterFactory.create())
.build().create(Engine.class);
- addConverterFactory可以自定义转换器
- 官网说明:(来源: 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