美文网首页
关于retrofit2.0的一些使用的简单总结

关于retrofit2.0的一些使用的简单总结

作者: 像像像向日葵 | 来源:发表于2017-03-31 10:09 被阅读0次

    近期做一些关于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的动态代理。。

    相关文章

      网友评论

          本文标题:关于retrofit2.0的一些使用的简单总结

          本文链接:https://www.haomeiwen.com/subject/fwvwmttx.html