实例带你了解Retrofit 2.0的使用,分享目前开发Retrofit遇到的坑和心得。
添加依赖
app/build.gradle
接口调用
|
|
如果@GET(“http://ip.taobao.com/service/getIpInfo.php"),则baseUrl无效。
注意这个任务是网络任务,不要忘记给程序加入网络权限
同步调用
|
|
同步需要处理android.os.NetworkOnMainThreadException
异步调用
|
|
移除请求
|
|
接口参数
Path
|
|
Query
如果链接是http://ip.taobao.com/service/getIpInfo.php?ip=202.202.33.33
Body
这是针对POST方式,如果参数是json格式,如:
建立Bean
代码调用
ApiStores
JSON解析库
Retrofit 2现在支持许多种解析方式来解析响应数据,包括Moshi,一个由Square创建的高效JSON解析库。
添加gson依赖
app/build.gradle
jsonschema2pojo
访问jsonschema2pojo,自动生成Java对象,如果你对gson还不熟悉,笔者建议你手动生成Java对象,感受下。
这里如果选择Gson,生成的代码中存在@Generated注解,Android默认并没有javax.annotation library。如果你希望保留@Generated注解,需要添加如下的依赖。
或者,你可以直接删除这个注解,完全没有问题。笔者当然不会加这个依赖啦。
Gsonformat
作用:Android studio插件,一般接口返回数据后要建立自己的bean,Gsonformat帮助你快速生成,不用一条一条去写。比jsonschema2pojo更加简单。
安装步骤:Android studio-Settings-Plugins-搜Gsonformat-Install Plugin
效果预览:
实例代码
依旧演示上面的天气:http://www.weather.com.cn/adat/sk/101010100.html
ApiStores:
调用:
经Gson转换器,Call<ResponseBody>
换成自己要写的Call<WeatherJson>
RxJava
依赖以下:
增加addCallAdapterFactory
ApiStores
subscribe部分的代码在Schedulers.io被调用,需要把observeOn(AndroidSchedulers.mainThread())添加到链表中。
Retrofit源码解析
另见白瓦力的博客,分析的很到位,解释了0、Retrofit 是什么,1、Retrofit 怎么用,2、Retrofit的原理是什么,3、一些总结。
博客地址:http://bxbxbai.github.io/2015/12/13/retrofit2/
PS:十分感谢白瓦力,他教会我们如何去查看源码的一种有效方法,debug一步步去跟源码。
附录
retrofit官方文档
用 Retrofit 2 简化 HTTP 请求
使用Retrofit请求API数据
Retrofit2 更新指南
RESTful API 设计指南