Android中Retrofit网络请求的用法

本文仅仅是从使用的角度,对使用Retrofit进行网络请求的自我总结

1、依赖的添加:

    // Retrofit库
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    // gson解析,可以自行替换
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    // 日志的拦截器,也可以自行选择
    implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'

2、对Retrofit进行初始化

initRetrofit();

2.1 Retrofit mRetrofit = new Retrofit.builder() .build()

    /**
     * 初始化Retrofit
     */
    public AllApi initRetrofit() {
        if (allApi == null) {
            Retrofit mRetrofit = new Retrofit.Builder()
                    .client(MyApp.initOKHttp())
                    // 设置请求的域名
                    .baseUrl(ApiAddress.API)
                    // 设置解析转换工厂,用自己定义的
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .build();
            allApi = mRetrofit.create(AllApi.class);
        }
        return allApi;
    }

其中首先使用:Retrofit mRetrofit = new Retrofit.builder() .build() 新建Retrofit对象,其次在创建Retrofit对象的中间使用链式结构进行各种属性的创建

.client(MyApp.initOKHttp())  其中添加httpclient,httpclient可进行全局变量的设置
// 设置请求的域名
.baseUrl(ApiAddress.API)
// 设置解析转换工厂,用自己定义的
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

       全局httpclient设置如下:

    /**
     * 全局httpclient
     */
    public static OkHttpClient initOKHttp() {
        if (mOkHttpClient == null) {
            mOkHttpClient = new OkHttpClient.Builder()
                    //设置连接超时时间
                    .connectTimeout(TIMEOUT, TimeUnit.SECONDS)
                    //设置读取超时时间
                    .readTimeout(TIMEOUT, TimeUnit.SECONDS)
                    //设置写入超时时间
                    .writeTimeout(TIMEOUT, TimeUnit.SECONDS)
                    //添加日志拦截器
                    .addInterceptor(InterceptorUtil.LogInterceptor())
                    //cookie
                    .addInterceptor(new SessionIdInterceptor())
                    .build();
        }
        return mOkHttpClient;
    }

.addConverterFactory(GsonConverterFactory.create())  的作用是将得到的数据解析成所需要的对象或集合,增强了数据的保密性,但是个人认为对于调试时获取服务端的原始数据进行分析时,会显得有点麻烦,添加日志拦截器以后可以解决这样的问题

2.2 、mRetrofit.create(AllApi.class);

  其中传入的参数为接口类

3、创建接口类:

顾名思义,其中放入的是自己使用时需要调取的各种接口地址及接口方法;

Retrofit通过注解对请求方法、参数、地址等进行处理,从而进行调用;

 @GET("users/list")

 @POST(ApiAddress.USER_LOGIN)

传参:

get方法:通过Query、QueryMap我们传入参数,就可以访问各种数据

post方法:通过@Body传递参数(除了表单类型外都可以使用@Body注解请求体)

注:注解的方式有多种多样,此为个人使用的一种方式

4、调用及数据的回调

Call<ResponseBody> repos = RetrofitUtil.getInstance().initRetrofit().getDeptList(map);
repos.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    //处理数据,然后在UI线程中更新数据
    }
    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
    }
});

回调后的数据处理等在此省略

5、Retrofit的单例模式封装

    /**
     * 单例封装
     *
     * @return
     */
    public static RetrofitUtil getInstance() {
        if (mInstance == null) {
            synchronized (RetrofitUtil.class) {
                if (mInstance == null) {
                    mInstance = new RetrofitUtil();
                }
            }
        }
        return mInstance;
    }

至此,Retrofit的基本用法完结,

此为个人对Retrofit网络请求的基本梳理,如有不足及错误望请指正,在此感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值