1. public class MainActivity extends AppCompatActivity {
  2. @SuppressLint("CheckResult")
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. ApiClient.retrofit().create(ApiStores.class).loadDataByRetrofitRxJava("101220602")
  7. .subscribeOn(Schedulers.io())
  8. .observeOn(AndroidSchedulers.mainThread())
  9. .subscribe(new Observer<MainModel>() {
  10. @Override
  11. public void onSubscribe(Disposable d) {
  12. Log.w("输出:", "连接" );
  13. }
  14.  
  15. @Override
  16. public void onNext(MainModel mainModel) {
  17. Log.w("输出:", "" + mainModel.getWeatherinfo().getCity());
  18. Log.d("输出:", "observer thread is : " + Thread.currentThread().getName());
  19. }
  20.  
  21. @Override
  22. public void onError(Throwable e) {
  23. Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
  24.  
  25. }
  26.  
  27. @Override
  28. public void onComplete() {
  29. Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
  30.  
  31. }
  32. });
  33. }
  34.  
  35. public interface ApiStores {
  36. //baseUrl
  37. String API_SERVER_URL = "http://www.weather.com.cn/";
  38.  
  39. //加载天气
  40. @GET("adat/sk/{cityId}.html")
  41. Observable<MainModel> loadDataByRetrofitRxJava(@Path("cityId") String cityId);
  42. }
  43.  
  44. }

主方法

  1. public class ApiClient {
  2. public static Retrofit mRetrofit;
  3.  
  4. public static Retrofit retrofit() {
  5. if (mRetrofit == null) {
  6. OkHttpClient.Builder builder = new OkHttpClient.Builder();
  7. builder.readTimeout(5, TimeUnit.SECONDS);
  8. builder.connectTimeout(5, TimeUnit.SECONDS);
  9.  
  10. if (BuildConfig.DEBUG) {
  11. // Log信息拦截器
  12. HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
  13. loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
  14. //设置 Debug Log 模式
  15. builder.addInterceptor(loggingInterceptor);
  16. }
  17. OkHttpClient okHttpClient = builder.build();
  18. mRetrofit = new Retrofit.Builder()
  19. .baseUrl(MainActivity.ApiStores.API_SERVER_URL)
  20. .addConverterFactory(GsonConverterFactory.create())
  21. .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  22. .client(okHttpClient)
  23. .build();
  24. }
  25. return mRetrofit;
  26. }
  27.  
  28. }

新建类

  1. public class MainModel {
  2.  
  3. public static WeatherinfoBean getWeatherinfo() {
  4. return new WeatherinfoBean();
  5. }
  6.  
  7. public static class WeatherinfoBean {
  8. private String city;
  9.  
  10. public String getCity() {
  11. return city;
  12. }
  13.  
  14. public void setCity(String city) {
  15. this.city = city;
  16. }
  17.  
  18. }
  19. }
  1. implementation 'io.reactivex.rxjava2:rxjava:2.2.9'
  2. implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
  3. //retrofit
  4. implementation 'com.squareup.retrofit2:retrofit:2.6.0'
  5. //Gson converter
  6. implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
  7. //RxJava2 Adapter
  8. implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
  9. //okhttp
  10. implementation 'com.squareup.okhttp3:okhttp:3.12.0'
  11. implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'

直接把依赖复制到build.gride然后同步

retrofit和RxJava结合的更多相关文章

  1. Retrofit结合RxJava使用指南

    Retrofit结合RxJava使用指南 Retrofit是一个当前很流行的网络请求库, 官网的介绍是: "Type-safe HTTP client for Android and Jav ...

  2. Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

    前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下R ...

  3. Retrofit与RXJava整合

    Retrofit 除了提供了传统的 Callback 形式的 API,还有 RxJava 版本的 Observable 形式 API.下面我用对比的方式来介绍 Retrofit 的 RxJava 版 ...

  4. 使用Retrofit和RxJava

    使用Retrofit和RxJava整合访问网络,然后将数据显示到界面上 def retrofitVersion = '2.0.0-beta1' dependencies { compile fileT ...

  5. Android笔记之Retrofit与RxJava的组合

    依赖 implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:con ...

  6. Retrofit+Okhttp+RxJava打造网络请求之Post

    之前一直在准备Android培训的事情,所幸的是终于完事啦,在这过程中真的发现了自身无论从沟通能力还是技术能力上很多的不足,就用一句 路漫漫其修远兮,吾将上下而求索 来勉励自己吧.之前也在项目上用上O ...

  7. Retrofit与RXJava整合(转)

    Retrofit 除了提供了传统的 Callback 形式的 API,还有 RxJava 版本的 Observable 形式 API.下面我用对比的方式来介绍 Retrofit 的 RxJava 版 ...

  8. Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(二)

    1,昨天我们基本上把MVP给封装起来了,今天接着昨天的东西来结合RxJava把Retrofit把网络框架简单的封装一下,先看一下我们今天实现的效果: 哈哈 ,还是昨天的效果,好吧 ,我认错. 2,由于 ...

  9. Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(一)

    1,其实早就想把这些东西给封装封装的,一直没有时间,今天刚好项目进入到测试阶段了,Bug同事在哪儿测试的飞起,但发现提bug的尽然是我(得意脸),然后上午把ios的包测试了一下,顺便把服务器给测挂了( ...

  10. retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】

    项目地址:https://github.com/baiqiantao/retrofit2_okhttp3_RxJava_butterknife.git <uses-permission andr ...

随机推荐

  1. 浅谈c++(一)

    本人为菜鸟一枚,如有错误,欢迎指正. 由于上半年学了C语言,为了更好的过渡到C++,我将在未来展示一下两者的不同以及优缺点.在c++中,不得不谈到类.这是C++中最重要的语法特征.我们可以通过它,定义 ...

  2. C++获取运行程序当前目录

    1 HMODULE GetSelfModuleHandle() 2 { 3 MEMORY_BASIC_INFORMATION mbi; 4 return ((::VirtualQuery(GetSel ...

  3. Dominate【操作系统的经典算法】

    此篇文章我们来谈一谈操作系统中都出现过哪些算法,请欣赏下图 ↓ 进程和线程管理中的算法 进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有很多进程或者 ...

  4. js计算两个时间相差

    .filter('useTime', function() { return function(val) { // if (/.(.mp4)$/gi.test(url)) { // return JS ...

  5. spring aop 源码分析(二) 代理方法的执行过程分析

    在上一篇aop源码分析时,我们已经分析了一个bean被代理的详细过程,参考:https://www.cnblogs.com/yangxiaohui227/p/13266014.html 本次主要是分析 ...

  6. Python-读写csv数据模块 csv

    案例: 通过股票网站,我们获取了中国股市数据集,它以csv数据格式存储 Data,Open,High,Low,Close,Volume,Adj Close 2016-06-28,8.63,8.47,8 ...

  7. 梯度下降法Gradient descent(最速下降法Steepest Descent)

    最陡下降法(steepest descent method)又称梯度下降法(英语:Gradient descent)是一个一阶最优化算法. 函数值下降最快的方向是什么?沿负梯度方向  d=−gk

  8. 剑指offer-链表&数组

    1.圆圈中最后剩下的数 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈. ...

  9. spring-boot-route(三)实现多文件上传

    Spring Boot默认上传的单个文件大小1MB,一次上传的总文件大小为10MB. 单个文件上传使用MultipartFile参数来接收文件,多文件使用MultipartFile[]数组来接收,然后 ...

  10. P3378 堆(模板)

    P3378 [模板]堆 题目描述 给定一个数列,初始为空,请支持下面三种操作: 给定一个整数 x,请将 x 加入到数列中. 输出数列中最小的数. 删除数列中最小的数(如果有多个数最小,只删除 1 个) ...