Retrofit是RESTful的HTTP网络请求框架的封装。
网络请求的工作本质上是okHttp完成的,而retrofit仅负责网络请求接口的封装。
使用步骤:
1.创建描述网络请求的接口
在内部通过注解描述网络请求的参数和配置网络请求参数。
在这个方法内定义了一个getInService()方法,返回值是个Call类型的泛型,他把表示的是接收数据的类在内部定义了个Bean, 。
这就是第一步,定义一个接口,然后再接口中定义一个方法和相应的注解。
其实第一部非常关键,因为Retrofit内部会通过动态代理的模式将我们的接口以及注解转换成一个http请求,最后在去执行http请求。还有一点就是接口中的每一个方法还有他的参数都需要使用注解来标注。
2.创建retrofit实例
一个Retrofit他完整的url包含两部分,一个是在baseUrl中,还有一个是在接口中通过注解设置的。
addConverterFactory添加一个数据解析的工厂,由这个数据解析的工厂生产数据解析器,用来解析服务器解析给我们的数据
addCallAdapterFactory添加网络请求适配器的工厂,其实作用都是一样的,通过工厂模式生产我们的网络请求适配器。因为Retrofit支持多种网络请求适配器的方式,比如Java8,RxJava等等,这时候系统就会根据我们需要的 场景选择不同网络请求的适配器。
3.创建网络请求接口实例并配置网络请求参数
调用Retrofit的create方法,并将前面的接口传进来,其实就是获取前面接口定义好的一个对象,然后调用接口中定义好的方法来获取我们的Call对象。这个Call对象非常重要,它是用于发送网络请求所需要的。
4.发送网络请求
在这里模仿了一个异步网络请求的方法,他的请求方法和okhttp是一致的。因为Retrofit网络请求本质上都是由okhttp来做的,Retrofit只是对我们网络请求的一个接口进行一个封装。(包括对参数的一个设置,头部信息,url等等)
5.处理服务器返回的数据
通过callback接口返回两个方法,在成功或失败的方法内做出相应的处理