栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android开发学习之Retrofit框架

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android开发学习之Retrofit框架

Retrofit是一款类型安全的网络框架,基于HTTP协议,服务于Android和java语言,在使用时其实就充当了一个适配器的角色,主要是将一个 Java 接口翻译成一个 HTTP 请求对象,然后用内部封装的 OkHttp 去发送这个请求。
github地址:https://github.com/square/retrofit
引入依赖:

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
一、使用方法
  1. 根据网络Http接口创建Java的接口,以下以username,password为例
  2. 在Java接口中定义post和get方法,返回值应该为Call
  3. 为方法和参数加上对应注解,post方法加上@POST(“post”),定义数据提交方式如@FormUrlEncoded,post方法参数加上@Field(“key”);get方法加上@GET(“get”),参数加上@Query(“key”):如下
  4. 在onCreate()方法中创建Retrofit对象,并利用Retrofit对象的create方法生成接口实现类对象
  5. 以post为例:调用接口对象的post方法传入参数得到Call对象
  6. Call对象调用enqueue方法,重写两个回调方法
public interface HttpbinService {
    @POST("post")
    @FormUrlEncoded
    Call post(@Field("username") String username, @Field("password") String password);

    @GET("get")
    Call get(@Query("username") String username, @Query("password") String password);
}
retrofit2.Call call = httpbinService.post("username","123456");
call.enqueue(new retrofit2.Callback() {
    @Override
    public void onResponse(retrofit2.Call call, retrofit2.Response response) {
        try {
            Log.d("TAG",response.body().string());
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(retrofit2.Call call, Throwable t) {

    }
});
二、Retrofit转换器

无论是OkHttp还是Retrofit得到的服务器响应都是字符串类型,在实际开发中,我们经常需要对字符串进行解析将其转变成为一个Java Bean对象。如服务器响应数据为json格式字符串,那么需要利用GSON完成反序列化。而Retrofit提供了多个转换器使得响应能够完成自动数据转换。

  1. 引入转换器依赖:implementation ‘com.squareup.retrofit2:converter-gson:2.9.0’
  2. 根据json格式创建Java Bean类
  3. Retrofit接口中的方法返回类型中Call泛型改为Java Bean类
  4. 申明Retrofit对象时,调用addConverterFactory(GsonConverterFactory.create())添加转换器。
  5. 获得Response对象后,调用body()方法得到Java Bean类对象
三、Retrofit的嵌套请求和适配器

在实际开发中,可能存在需要先请求A接口再请求B 接口的情况。此时的请求就有了先后顺序,需要嵌套实现请求。这时就可以利用RxJava中的Observable替换Retrofit返回的Call类型。即使用适配器转换其他类型。
github地址:https://github.com/ReactiveX/RxJava
引入依赖:

implementation "io.reactivex.rxjava3:rxjava:3.1.1"

声明Retrofit对象时,调用addCallAdapterFactory(RxJava3CallAdapterFactory.create())添加适配器。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/305468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号