撸代码之前,先简单了解一下为什么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而是一个Observable的对象了。

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. 第三课.使用简单的NN模拟fizzbuzz
  2. linux下防火墙加白名单
  3. div 文字 input 垂直居中
  4. 存储类、链接、内存管理
  5. Django学习资源
  6. git 2015-5-26
  7. sql server2008密钥
  8. 计算机基础知识题库pdf,计算机基础知识题库完整.pdf
  9. 连点器安卓手机版_万代奥特曼变身器安卓版下载_万代奥特曼dx变身器安卓手机版下载 v1.0.0...
  10. Only老K说-Java设计模式之原型模式(Prototype)
  11. Ubuntu20.04电脑开启热点
  12. 计算机专业英语辅导教材,计算机专业英语2全套教材.ppt
  13. IoT技术概览(postscapes)
  14. 用dos2unix批量转换文件
  15. 主机名以及内外部命令
  16. Oracle中的日期和字符串互相转换以及格式化
  17. 重庆python培训价格
  18. OpenGL 视差贴图 Parallax Mapping
  19. python入门2——基础语法2——字符串详解
  20. UILabel设置多种字体、颜色

热门文章

  1. python调用带参函数_Python | 带有示例的函数调用类型
  2. Java GregorianCalendar computeTime()方法与示例
  3. Django学习笔记《一》图书管理系统项目挂载到阿里云
  4. PyCharm安装好vim后,怎么配置.vimrc
  5. linux上p图工具,linux图片处理工具GraphicsMagick安装使用
  6. memcpy/memset函数的c语言实现
  7. VirtualBox Ubuntu个人配置
  8. WinPcap笔记(7):分析数据包(1)
  9. 【大牛疯狂教学】深入拆解java虚拟机百度云
  10. ElasticSearch6.3脚本更新