Retrofit简单使用总结

Retrofit简单使用总结

前言

Retrofit是一个restful的http请求框架的封装,其网络请求并不是由retrofit去发送,而是由其内部封装的okhttp去处理。retrofit主要专注于对于接口的封装,而OkHttp专注于网络请求的发送以及请求发送的高效

在这里插入图片描述

应用使用retrofit发送请求时的流程如上,应用通过retrofit对请求接口进行封装,retrofit再去调用其内部封装的OkHttp进行请求的发送,接受请求也是由OkHttp去呈递给Retrofit,最终展示给应用。

其在github上的介绍也很简单:

在这里插入图片描述

适用于安卓和java简单而安全的http客户端,引入依赖使用gradle:com.squareup.retrofit2:retrofit:2.9.0,要求JDK1.8及以上或者安卓api21及以上

简单使用

  • 依赖引入

    <dependency>
                <groupId>com.squareup.retrofit2</groupId>
                <artifactId>retrofit</artifactId>
                <version>2.9.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>5.7.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
            <dependency>
                <groupId>com.squareup.retrofit2</groupId>
                <artifactId>converter-gson</artifactId>
                <version>2.0.2</version>
            </dependency>
    

    可以看到,对maven添加了三个依赖,retrofit,junit,和converter-gson,junit为单元测试,主要用于对retrogfit测试程序,converter-gson是适用于retrofit引擎的json格式转换,可以将返回的数据转为json数据。

    tips:由于官方使用的依赖是gradle,因而网络上大部分资料关于converter-gson的引入都是gradle,因此在这里简单提一下其与maven之间形式上的区别;

    例如:gradle:

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    

    对应的maven

    <dependency>
      <groupId>com.squareup.retrofit2</groupId>
      <artifactId>retrofit</artifactId>
      <version>2.9.0</version>
    </dependency>
    

    可以看到,在引用方式上,gradle对于groupId,artifactId和版本都有要求,之间以冒号间隔,maven就显得很清晰

    所以两者之间的依赖迁移只需匹配对应的规则即可。

  • 接口定义

    public interface retrofitClient {
        @GET("getPerson")
        Call<List<person>> userList();
    }
    

    get注解为请求方式和路径,参数的定义可以再方法的参数里去加,使用@Path注解

    Call接口使得之后创建的service的每个调用都可以想远程服务器发送同步或者异步请求

  • service创建

    public Retrofit retrofit;
    
        public retrofitClient getRetrofit(){
            retrofit = new Retrofit.Builder()
                    .baseUrl("http://localhost:8080/")
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            retrofitClient retrofitClient = retrofit.create(retrofitClient.class);
            return retrofitClient;
        }
    

    使用Retrofit对象的Builder方法去创建retrofit实例,之中可以添加一些基本属性,baseUrl为要请求的基本路径,addConverFactory指定返回数据使用的解析器,build方法创建Retrofit对象。

    create后跟接口类的class对象

  • 简单测试

    @Test
        public void getPerson(){
            retrofitUtil retrofitUtil = new retrofitUtil();
            retrofitClient retrofit = retrofitUtil.getRetrofit();
            System.out.println(retrofit.userList());
        }
    
    

    这一部分使用retrofit对象去发送请求,并打印返回的值。要注意的是,由于retrofit对象将gson封装好了,因而请求的参数和response都变得不可见,想要看到返回值的具体值可以添加拦截器去处理,这里只能简单测试是否可以发送并接受。

    还有,baseurl里的路径后要加‘/’,之前创建的接口里最前边不要加’/‘。

  • 结果展示

    在这里插入图片描述

在这里插入图片描述

错误总结

在这里插入图片描述

在创建时需要加入格式解析器:.addConverterFactory(GsonConverterFactory.create())

在这里插入图片描述

junit依赖错误,springboot创建模板里的test
在这里插入图片描述

并不是完整的junit,在引入junit4依赖后问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值