Retrofit使用总结

本文详细介绍了Retrofit的使用,包括其对OkHttp的封装、数据转换器和适配器的功能。通过注解编写接口类,创建Retrofit实例,解析接口以发起网络请求。文章还深入探讨了不同注解的用途,接口类解析与调用流程,适配器如DefaultCallAdapterFactory和RxJava3CallAdapterFactory的工作原理,以及数据转换器BuiltInConverters的定制方法。
摘要由CSDN通过智能技术生成

#.整体介绍

     Retrofit也是一个网络请求库,它是对OkHttp的进一步封装。
    用OkHttp做请求时需要我们自己设置各种请求参数,并且对结果做解析。
    Retrofit的 网络请求工作实际上还是由OkHttp来完成, Retrofit针对OkHttp的输入和输出过程做处理 ,简化了这两个过程的代码编写,提供了强大的功能支持。

1.Retrofit封装了上层的网络请求接口,帮助开发者简化OkHttp的Request封装。

    可以使用Retrofit提供的一堆注解,来编写网络请求接口类,然后Retrofit会解析这个接口类,调用相关接口时, Retrofit内部会生成对应的Http请求数据体,并最终调用OkHttp来发起网络请求。      

2.Retrofit提供了数据转换器和适配器功能,当从OkHttp获取到网络请求结果Response后会做进一步地各种处理

    定义网络接口的返回类型时,需要与 数据转换器、适配器要相结合。

#.使用过程简介

1.使用注解编写接口类,示例:

public interface TestHttpService2 {
    @GET("weather/xxx/xxx")
    Call<String> testGet1(@Query("params1") int arg1, @Query("params2") String arg2);
}

2.创建Retrofit实例,解析接口类获取接口对象。示例:

 
​
    //创建OkHttpClient实例
    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.connectTimeout(5, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            
            .writeTimeout(10, TimeUnit.SECONDS);
    mOkHttpClient = builder.build();
    //创建Retrofit实例
    Retrofit.Builder builder = new Retrofit.Builder();
        //配置URL基地址,Retrofit2 的baseUrl必须以 /(斜线)结束,否则会抛出错误
        //这里的baseUrl加上接口类中每个方法注解后面的路径,才是一个接口的完整url地址
    builder.baseUrl(“Ten▪Api - Tenapi.cn”)
        .client(mOkHttpClient)//配置OkHttp实例
        //配置使用的适配器
        .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
        //配置使用的数据转化器
        .addConverterFactory(new HttpConverterFactory());
    mRetrofit = builder.build();
    //解析接口类,获取代理对象
    mHttpService = mRetrofit.create(TestHttpService.class);
}
​

3.调用代理对象的接口,获取到Call对象(或者Call的封装对象,要看选用的是什么适配器);利用Call(或其它对象)触发网络请求,获取结果数据并做需要的处理。

//调用方法获取Call对象或者Call对象的封装对象
Call<String> call = mHttpService.testGet1(3, "xxx");
//触发Retrofit发起网络请求,并获取Retrofit处理后的请求结果
call.enqueue(new Callback<String>() {
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
        //....做相应处理....
    }

    @Override
    public void onFailure(Call<String> call, Throwable t) {
        //....做相应处理....
    }
});
(整体流程示意图,图片来自网络)

#.一、使用注解编写接口类

    使用Retrofit提供的注解来编写接口类,Retrofit能够解析使用注解编写的接口类,从而大大简化了相关功能开发。

##.各种注解

主要分为4类,分别用于标注请求方式、标记请求头、标记请求参数、标记请求和响应格式。

1. 请求方法注解

注解类型
说明
@GET
get请求
@POST
post请求
@PUT 
put请求
@DELETE
delete请求
@PATCH
用于更新局部资源,是PUT请求的补充
@HEAD 
head请求
@OPTIONS
options请求
@HTTP
该注解可以替换以上所有的注解,它拥有三个属性:method、path、hasBody

2. 请求头注解

请求头注解
说明
@Headers
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值