第一步 : 在 bundle.gradle中导入retrofit jar 包依赖与网络权限的添加:Android.premission.INTERNET
以上是retrofit在使用时依赖的jar 包
由于retrofit底层使用的是okkhttp来进行网络请求的发送,所以要倒入okhttp的依赖jar包
第三个是retrofit使用gson来进行返回数据解析时使用的jar包
第二步:创建发送请求的抽象接口
为了降低耦合度,使用了抽象接口定义的方法,在发送新的请求时,使用者只需添加新的接口即可。
在使用过程中有注解的使用
@GET注解表示发送的时GET请求 注解后的“()“中填写的是域名之后,查询请求参数之前的东西
当请求的URL中含有查询参数时
例如https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-03-18&from_station=BJP&to_station=CDW
这种,query?后面的就是请求的查询参数
这时如果要发送请求,并添加请求参数,可以使用@Query
这里的@Query()中的内容为请求的ID 后面的String from 为请求传入的形参
当请求的参数过多时可以使用map来进行内容的封装
这里使用@QueryMap注解来进行对封装内容的接受
还可以使用@PATH 注解来往占位符中添加内容
当请求为以下格式时:
如果是组合后直接请求,如/result/{id}写法如下:
第三步:创建接受返回结果的类对象
这里的PhoneResult 就是接受请求的类对象
参照对应的返回数据流进行接受内容类的创建
第四步:使用Retrofit创建请求抽象类实例并进行请求的发送
这里是使用的@Query注解来接受的查询参数
首先 先要创建出Retrofit对象 使用 Retrofit.Builder()方法进行构建
其中 .baseUrl()是用来设置请求的域名的 其结尾必须要”/“结尾 而且不能为空
.addConverterFactory()是用来设置解析返回结果的方法
.build()结尾表示其Retrofit对象创建完毕
retrofit对象创建完毕后调用retrofit.create()方法来实例化一个刚才写的抽象的请求接口对象,传入接口的class即可
创建完毕后调用 实例化对象的getRank方法 如果使用@Query注解则按顺序传入参数,如果使用@QueryMap注解则需要构建好map对象传入如下图:
调用抽象类中的抽象方法,返回对象为Call<接受返回值的对象>类型
调用其enqueue()方法来进行请求的发送