Android retrofit2+OkHttp3的初尝试

本文通过一个天气预报小demo介绍了如何优化OkHttp3+Gson的MVP模式实现,并探讨了使用Retrofit结合OkHttp进行网络请求的方法。文章详细讲解了从引入依赖、创建RetrofitService到实现RetrofitHelper的全过程。

效果:

问题:

问题出现在我之前写的Android (OkHttp3+Gson)用MVP模式实现天气预报小demo ,在那个小demo里,当你想添加新的请求时(比如加个图书查询),你就得重新写一个sendRequst:

不写不知道,一写才发现,为了加这个请求,我需要把这个获取数据的过程都重写一遍。耗时又费事。

祸根是因为我回调是用WeatherBean对象回调的,这样的话一个请求只能完成一种数据回调,不够灵活。

我的想法是,不如只传Call<>对象,等到Activity具体获取数据时再传WeatherBean对象就行了,这样OkHttpUtils就可以复用了。

上面是关于那个demo的优化,在优化过程中我也开始尝试使用retrofit。 retrofit的名气我就不用多说了,网上有各种各样关于retrofit的文章,(推荐这篇:网络加载框架 - Retrofit)今天在这里简单的把retrofit+OkHttp这种网络请求方式做一下,有不好的地方欢迎指正。

知识点:

1. retrofit配合OkHttp的使用

一、框架的导入

本项目使用到的api:

www.sojson.com/open/api/we…

api.douban.com/v2/book/sea…

需要用到的库在build.gradle里输入这几行后sync就好了

二、RetrofitService

retrofit首先要写Url的内容,这种要求有一个好处是面对后面需要固定写法的Url时(比如网易新闻的api),可以用@Path补充,当然本项目暂时没用到,以后用到再演示吧。

三、RetrofitHelper

在写RetrofitHelper前我们先写个Api类,存放各种各样的Url

然后是RetrofitHelper

那么怎么获得数据呢? 实例化RetrofitHelper后,把Call<>对象.enqueue出来就好了,这一步和OkHttp基本一致:

截图里是Model层的代码,注释掉的代码是优化前的代码,供大家比较。

retrofit和Okhttp的结合就这样完成啦,可能因为是初尝试,或者使用环境太简单,所以我暂时还没体会到这两者这样结合有什么好处,如果有懂的大神欢迎到评论里指点。 以上代码是基于Android (OkHttp3+Gson)用MVP模式实现天气预报小demo这篇文章里的项目做的改动,除了上面截图的代码,还有些其他的改动详见项目源码:https://github.com/Huigesi/WetherDemo

转载于:https://juejin.im/post/5b0a638e6fb9a07ab5095c6b

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值