Android中Retrifit使用总结

来源:互联网 发布:lol美服加速器免费mac 编辑:程序博客网 时间:2024/06/06 02:59

Android中网络请求框架Retrofit的使用注意事项


1.Retrofit是基于OkHttp网络请求框架的二次封装而已,懂Okhttp的小伙伴,那么Retrofit也就基本都会。

2.Retrofit采用注解配置请求的方式:

以@GET(get请求)和@POST(post请求)两种方式@Query,表示请求上一个请求参数@QueryMap,表示请求上多个请求参数

3.Retrofit采用框架初始化请求方式:有一个call,表示异步请求线程。

具体的代码详见如下:

第一,写一个对应对象的javabean,我相信小伙伴们都会,不多说,此处以Object为例来说明

第二,在一个单独的类中去写请求地址的标识符号,便于后期项目的维护,代码如下:

public class ApiUrls {    //app主页类型标识符    public  static  final String HOME="home";}

第三,写一个请求主页地址api的接口:代码如下:

public interface XiaoKeApi {    //请求主页地址的方法    @GET(ApiUrls.HOME)    Call<Object> getHomeData();}

第四,简单封装Retrofit,代码如下:

public class HttpUtils {private static XiaoKeApi xiaokeApi;public static XiaoKeApi getApi() {    if (xiaokeApi == null) {            //初始化retrofit框架            Retrofit build = new Retrofit.Builder()            //1.配置主机地址            .baseUrl("http://192.168.xxoo.xxoo.8080/XiaoKeService/")            //2.解析json的工具        .addConverterFactory(GsonConverterFactory.create(new Gson())).build();            //读取接口上面的参数            xiaokeApi = build.create(XiaoKeApi.class);    }    return xiaokeApi;}

第五,封装一个简单的回调callBack方法:方便解析json数据,代码如下:

public class SimpleCallBack implements Callback<Object> {@Overridepublic void onResponse(Call<Object> call, Response<Object> response) {    Object body = response.body();    String json = body.data;    if (TextUtils.isEmpty(json)) {        showError(0, new RuntimeException("亲!取得数据为空"));    } else {        showData(1, json);    }}@Overridepublic void onFailure(Call<Object> call, Throwable t) {    t.printStackTrace();    showError(-1, t);}protected void showError(int i, Throwable t) {}protected void showData(int i, String json) {}注意:这里的showError和showData两个方法,是需要在使用的类中,自己做业务逻辑处理

第六,在真正使用的类中添加如下代码,即可完成Retrofit的网络请求过程:

    public void onClick() {    Call<Object> call = HttpUtils.getApi().getHomeData();    //Callback数据返回处理对象    SimpleCallBack callback=new SimpleCallBack(){        @Override        protected void showError(int i, Throwable t) {            super.showError(i, t);            ---        }        @Override        protected void showData(int i, String json) {            super.showData(i, json);            HomeData data= new Gson().fromJson(json,HomeData.class);            ---        }    };    call.enqueue(callback);}
致辞,Retrofit的网络请求框架的封装已经完成,谢谢读者观看,再见!
1 0