近期做一些关于retrofit2.0框架的东西,在此做个简单的总结,不足之处还希望多提意见,毕竟安卓初学者。
retrofit2.0的基本知识不在继续阐述了,主要是写下自己用到的东西,这里主要是在网络请求与应答的方式做了简单的格式封装。
1、首先是定义并初始化retrofit
public static String BASE_URL="http://123.abc.com/";
注意这里定义服务器url,为避免后面请求时接口url对其的覆盖,最好直接在后面带上“/”;
public static Retrofit retrofit = newRetrofit.Builder();
.addConverterFactory(GsonConverterFactory.create())//增加返回值为Gson的支持(以实体类返回)
.baseUrl(BASE_URL)//服务器 url
.client(genericClient())
.build();
2、定义请求与应答的实体类,请求的实体类就是简单的JAVA实体类;应答的实体类可使用DHC接口调试查看出参并使用AS的gsonformat工具生成。
3、定义所有业务的公用接口服务类,为了代码美观以及集成的思想,将所有接口放在一个接口服务类下面
public interface RequestService{
Stringurl1="gao/abc";
/**业务接口1*/
@POST(url1)
Call getPerformance(@BodyTestInData inputData);
/**业务接口2*/
@POST(url1)
Call getPerformance2(@BodyTestInData inputData);
// 仿照此方法继续加入接口。。。
}
4、定义类实现3中的接口方法,并传入入参具体值
public class InterfaceFactory implements RequestService{
/**业务接口1*/
@Override
publicCall getPerformance(@BodyTestInData inputData) {
inputData.setService("aaaa");//接口名称
inputData.setUser_id("198");
returnMainApplication.retrofit.create(RequestService.class).getPerformance(inputData);
} }
5、请求回调
(1)、以实体类的形式应答
TestInData inputData =newTestInData();
Call<TestOutData> call =interfaceFactory.getPerformance(inputData);
call.enqueue(newCallback<TestOutData>() {
@Override
public voidonResponse(Call<TestOutData> call, Response<TestOutData> response) {
if(response.isSuccess()) {
TestOutData.ResultDataBean testOutData = response.body().getResult_data();
//。。。。。
}
(2)、以Object应答在自行解析
TestInData inputData =newTestInData();
Call<Object> call = InterfaceFactory.getPerformance(inputData);
call.enqueue(newCallback<Object>() {
@Override
public voidonResponse(Call<Object> call, Responseresponse) {
if(response.isSuccess()) {
linkedTreeMap = (LinkedTreeMap) response.body().getResult_data();
Gson gson = new Gson();
String str = gson.toJson(linkedTreeMap);
//。。。。。
}
至此一个简单的关于retrofit的demo写完了,主要是实体类形式出入参方便工程修改,另外一个好处是retrofit使用了java的动态代理。。