美文网首页Android开发Android技术知识
Android retrofit2+OkHttp3的初尝试

Android retrofit2+OkHttp3的初尝试

作者: Huigesi | 来源:发表于2018-05-19 20:03 被阅读1388次

    效果:

    金瓶梅效果.gif

    前言:

    这个demo主要是练手和初尝试,后面也在慢慢更新优化网络请求方面的代码。本章的代码也并不完美,推荐一步一步看后续更新的文章。该系列的其他文章:

    VOL.1:Android (OkHttp3+Gson)用MVP模式实现天气预报小demo

    VOL.3: Android RxJava+retrofit2的初尝试

    问题:

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

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

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

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

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

    知识点:

    1. retrofit配合OkHttp的使用

    一、框架的导入

    本项目使用到的api:

    https://www.sojson.com/open/api/weather/json.shtml?city=广州

    https://api.douban.com/v2/book/search?q=金瓶梅

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

    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    
    build.gradle

    二、RetrofitService

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


    RetrofitService

    三、RetrofitHelper

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


    Api.java

    然后是RetrofitHelper


    RetrofitHelper.java

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


    BookModel.java

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

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

    相关文章

      网友评论

        本文标题:Android retrofit2+OkHttp3的初尝试

        本文链接:https://www.haomeiwen.com/subject/gnuadftx.html