• Android中Retrifit使用总结


    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> {
    @Override
    public 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);
        }
    }
    @Override
    public 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数据返回处理对象http://www.90168.org/
        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= http://blog.csdn.net/u014745194/article/details/new Gson().fromJson(json,HomeData.class);
                ---
            }
        };
        call.enqueue(callback);
    }
    
    致辞,Retrofit的网络请求框架的封装已经完成,谢谢读者观看,再见!
  • 相关阅读:
    composer阿里云短信服务不支持传参为数值--为2017年短信接口,2018阿里云有更新http://www.cnblogs.com/q1104460935/p/8916096.html
    随机生成字符串,数字,手机号,邮箱
    C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (上篇)
    自动升级功能
    C# WinForm 设置按纽为透明,使用背景色
    sql server 2000 单主键高效分页存储过程 (支持多字段排序)
    分页存储过程
    C# WinForm 解决子窗体放大后,子窗体图标放大的问题
    Windows 7/8 64位系统 不能注册32位dll 文件的解决方案
    添加ico图标
  • 原文地址:https://www.cnblogs.com/tianshifu/p/6214865.html
Copyright © 2020-2023  润新知