撸代码之前,先简单了解一下为什么Retrofit这么受大家青睐吧。???

Retrofit是Square公司出品的基于OkHttp封装的一套RESTful(目前流行的一套api设计的风格)网络请求框架。它内部使用了大量的设计模式,以达到高度解耦的目的;它可以直接通过注解的方式配置请求;可以使用不同的Http客户端;还可以使用json Converter序列化数据,直接转换成你期望生成的实体bean;它还支持Rxjava等等等(此处省略一万字.....)

好了,接下来开始我们就开始上代码,写个小Demo测试一下它的使用吧!
使用步骤:
1、app的build文件中加入:

//only Retrofit(只用Retrofit联网)compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'
//Rxjava and Retrofit(Retrofit+Rx需要添加的依赖)compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'compile 'io.reactivex:rxandroid:1.2.1'compile 'io.reactivex:rxjava:1.2.1'

2、接下来就要编写实现retrofit联网的代码了,以Get请求为例,示例接口:(http://wthrcdn.etouch.cn/weather_mini?city=北京)
首先,你需要创建一个interface用来配置网络请求。
写法《一》:单纯使用Retrofit,不加Rxjava的使用

/**
* 描述:第一步:定义一个接口配置网络请求
*/
public interface WeatherService {
//  网络接口的使用为查询天气的接口
//  @GET("weather_mini")
//  此处回调返回的可为任意类型Call<T>,再也不用自己去解析json数据啦!!!Call<WeatherEntity> getMessage(@Query("city") String city);

在需要请求网络的地方直接调用下面的方法即可:

  /*** 单纯使用Retrofit的联网请求*/private void doRequestByRetrofit() {Retrofit retrofit = new Retrofit.Builder().baseUrl(API.BASE_URL)//基础URL 建议以 / 结尾.addConverterFactory(GsonConverterFactory.create())//设置 Json 转换器.build();WeatherService weatherService = retrofit.create(WeatherService .class);Call<WeatherEntity> call = weatherService.getMessage("北京");call.enqueue(new Callback<WeatherEntity>() {@Overridepublic void onResponse(Call<WeatherEntity> call, Response<WeatherEntity> response) {//测试数据返回WeatherEntity weatherEntity = response.body();Log.e("TAG", "response == " +  weatherEntity.getData().getGanmao());}@Overridepublic void onFailure(Call<WeatherEntity> call, Throwable t) {Log.e("TAG", "Throwable : " + t);}});}

写法《二》 Retrofit + Rxjava
区别:使用Rxjava后,返回的不是Call<T>而是一个Observable<T>的对象了。

public interface RxWeatherService {@GET("weather_mini")Observable<WeatherEntity> getMessage(@Query("city") String city);
}

请求联网代码:

 private void doRequestByRxRetrofit() {Retrofit retrofit = new Retrofit.Builder().baseUrl(API.BASE_URL)//基础URL 建议以 / 结尾.addConverterFactory(GsonConverterFactory.create())//设置 Json 转换器.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//RxJava 适配器.build();RxWeatherService rxjavaService = retrofit.create(RxWeatherService .class);rxjavaService .getMessage("北京").subscribeOn(Schedulers.io())//IO线程加载数据.observeOn(AndroidSchedulers.mainThread())//主线程显示数据.subscribe(new Subscriber<WeatherEntity>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(WeatherEntity weatherEntity) {Log.e("TAG", "response == " + weatherEntity.getData().getGanmao());}});}

免费赠送一个WeatherEntity实体类(只给偷懒的小伙伴):
(在浏览器打开http://wthrcdn.etouch.cn/weather_mini?city=北京,取到json串直接用GsonFormat生成即可)

public class WeatherEntity {private DataBean data;private int status;private String desc;public DataBean getData() {return data;}public void setData(DataBean data) {this.data = data;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public static class DataBean {private YesterdayBean yesterday;private String city;private String aqi;private String ganmao;private String wendu;private List<ForecastBean> forecast;public YesterdayBean getYesterday() {return yesterday;}public void setYesterday(YesterdayBean yesterday) {this.yesterday = yesterday;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getAqi() {return aqi;}public void setAqi(String aqi) {this.aqi = aqi;}public String getGanmao() {return ganmao;}public void setGanmao(String ganmao) {this.ganmao = ganmao;}public String getWendu() {return wendu;}public void setWendu(String wendu) {this.wendu = wendu;}public List<ForecastBean> getForecast() {return forecast;}public void setForecast(List<ForecastBean> forecast) {this.forecast = forecast;}public static class YesterdayBean {private String date;private String high;private String fx;private String low;private String fl;private String type;public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getHigh() {return high;}public void setHigh(String high) {this.high = high;}public String getFx() {return fx;}public void setFx(String fx) {this.fx = fx;}public String getLow() {return low;}public void setLow(String low) {this.low = low;}public String getFl() {return fl;}public void setFl(String fl) {this.fl = fl;}public String getType() {return type;}public void setType(String type) {this.type = type;}}public static class ForecastBean {private String date;private String high;private String fengli;private String low;private String fengxiang;private String type;public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getHigh() {return high;}public void setHigh(String high) {this.high = high;}public String getFengli() {return fengli;}public void setFengli(String fengli) {this.fengli = fengli;}public String getLow() {return low;}public void setLow(String low) {this.low = low;}public String getFengxiang() {return fengxiang;}public void setFengxiang(String fengxiang) {this.fengxiang = fengxiang;}public String getType() {return type;}public void setType(String type) {this.type = type;}}}
}

好了,简单的Retrofit+Rxjava实现联网到此就完成了。本文主要针对初接触retrofit的开发童鞋,如果对你有所帮助,不要忘了点个赞哦!
后续会更新Retrofit+Rxjava在实际项目开发中的运用,可以直接拿来在项目中使用噢.......敬请期待

分分钟使用Retrofit+Rxjava实现网络请求相关推荐

  1. 教你分分钟使用Retrofit+Rxjava实现网络请求

    撸代码之前,先简单了解一下为什么Retrofit这么受大家青睐吧. Retrofit是Square公司出品的基于OkHttp封装的一套RESTful(目前流行的一套api设计的风格)网络请求框架.它内 ...

  2. kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式...

    2019独角兽企业重金招聘Python工程师标准>>> 今天要说的干货是:以Kotlin,在MVP模式下(OKHttp和 Retrofit+RxJava)网络请求两种实现方式的一个小 ...

  3. android+MVP+Retrofit+RxJava做网络请求

    1.MVP+Retrofit+RxJava做网络请求2.GreenDao把第一页的数据缓存到数据库,列表实现上拉加载更多,下拉刷新功能 3.列表中的图片(img字段)使用Fresco进行加载 4.Re ...

  4. 一步步搭建Retrofit+RxJava+MVP网络请求框架(一)

    首先,展示一下封装好之后的项目的层级结构.  1.先创建一个RetrofitApiService.java package com.xdw.retrofitrxmvpdemo.http;import ...

  5. 一步步搭建Retrofit+RxJava+MVP网络请求框架(二)

    在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...

  6. 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了

    在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...

  7. 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了...

    在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...

  8. Retrofit+Rxjava+MVP网络请求购物车

    效果图: 首先先导依赖 //retrofit依赖compile 'com.squareup.retrofit2:converter-gson:2.3.0'//retrofit内部封装的GSONcomp ...

  9. Kotlin使用Coroutine+ViewModel+retrofit构建一个网络请求框架

    Kotlin使用Coroutine+ViewModel+retrofit构建一个网络请求框架 公司里的老代码用的网络请求框架技术都比较老,为了快速搭建一个网络请求框架,提高工作效率,记录一下用jetp ...

最新文章

  1. LeetCode 225. Implement Stack using Queues--用队列实现栈--C++解法
  2. (010) java后台开发之String字符串操作
  3. 如何做相册_手机里的照片太多,不得已只能删除?那就试试制作电子相册吧
  4. 汉语诗词 LaTeX 排版样式
  5. android查看第三方libs的jar源码
  6. 如何优雅的使用全球最大同性社交网站
  7. 看完老板就给加薪了!javase项目快速入门
  8. (转)架构师害怕程序员知道的十项技能
  9. 【观察】UCloud:决胜东南亚“正当时”,做出海企业“加速器”
  10. wireshark抓包工具详细说明
  11. YYH的球盒游戏(NOIP模拟赛Round 6)
  12. 分支与循环语句(下)
  13. Kubernetes(15):Pod控制器ReplicaSet和Deployment详解
  14. 手机卡服务器密码忘记了怎么修改密码,wifi密码忘记了怎么办找回密码 手机怎么修改自家wifi密码...
  15. 赛舟-体验版 α测试调试方法
  16. mysql数据库modify_mysql数据库中 change 与 modify 的区别
  17. 【2019工研/模拟】九键输入法(巧用数组)
  18. 加密的PDF文件怎么解除密码
  19. python邮件模块_python 邮件模块
  20. Word编写VBA程序 hello world

热门文章

  1. VB 两种方法建立多级目录
  2. SCPPO(二十九):测算过程中问题的解决总结(续)
  3. 心情随笔(六):金秋十月备考之路亦别有一番风味
  4. 全球最贵红绿灯之谜得解,原来是百度Apollo的B面
  5. DeepMind提出训练网络新方法,快速找到最佳超参数和模型
  6. AI如何变革阿里电商?iDST首席科学家任小枫首次公开演讲
  7. 7个步骤:让JavaScript变得更好
  8. H5 FileReader对象
  9. (十四)函数参数和返回值
  10. 从微店到小程序店,微商仍是电商途中的苦行僧?