文章目录

  • 步骤攻略:

步骤攻略:

  1. 添加Retrofit2和RxJava2库的依赖:
  2. 创建接受服务器返回数据的类(用于处理数据的类)
  3. 创建用于描述网络请求的接口,并且配置网络请求参数
  4. 创建Retrofit实例
  5. 创建网络请求的接口实例
  6. 发送网络请求(同步,异步)
  7. 处理服务器返回的数据
    ##代码解析:
    ①添加网络权限和依赖,manifest中添加网络请求权限,app下的buildgradle文件添加如下依赖
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
//  ①  RxJava1.0+Retrofit2的依赖
//    compile 'io.reactivex:rxjava:1.1.0'
//    compile 'io.reactivex:rxandroid:1.1.0'//  ①  RxJava2.0+Retrofit2的依赖compile 'io.reactivex.rxjava2:rxjava:2.1.0'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'com.amitshekhar.android:rx2-android-networking:1.0.0'//支持把json解析成Java对象implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'com.squareup.retrofit2:converter-gson:2.3.0'implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//    以上三个版本号要保持一致implementation 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'implementation 'com.google.code.gson:gson:2.8.2'

②实体类,用于接受数据的实体类(略)
③创建用于描述网络请求的接口,并且配置网络请求参数
只用Retrofit2不用RxJava的接口:

package com.ytf.ppg.rxjava1demo.retrofit2;import com.ytf.ppg.rxjava1demo.bean.MovieEntity;import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;/*** Created by ppg on 2018/3/12.* ③网络请求接口,配置网络请求的参数* 当拥有该实例的对象时会调用call方法* @Query GET方法查询参数,体现在URL中,相当于URL中?后的k-v键值对,url=“******?start=start&count=count”*/public interface MoviesService {@GET("top250")Call<MovieEntity> getTopMovie(@Query("start") int start,@Query("count") int count);
}

使用RxJava的接口:

package com.ytf.ppg.rxjava1demo.retrofit2;import com.ytf.ppg.rxjava1demo.bean.MovieEntity;import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;/*** Created by ppg on 2018/3/12.* ③网络请求接口,配置网络请求的参数* 当拥有该实例的对象时会调用call方法* @Query GET方法查询参数,体现在URL中,相当于URL中?后的k-v键值对,url=“******?start=start&count=count”*/public interface MoviesServiceRxJava {@GET("top250")Observable<MovieEntity> getMovies(@Query("start") int start, @Query("count") int count);
}

④acvitity中实现:

package com.ytf.ppg.rxjava1demo;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import com.ytf.ppg.rxjava1demo.bean.MovieEntity;
import com.ytf.ppg.rxjava1demo.retrofit2.MoviesService;
import com.ytf.ppg.rxjava1demo.retrofit2.MoviesServiceRxJava;import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity {@BindView(R.id.mBtn_click)Button mBtn_click;@BindView(R.id.tv_mTv_content)TextView tv_mTv_content;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);}@OnClick(R.id.mBtn_click)public void onClick(){
//        getMovies();getMoviewByRxJava();}/*** 只用Retrofit2进行网络请求的方法* (未封装,原生态)*/private void getMovies() {String baseUrl = "https://api.douban.com/v2/movie/";
//      ④  创建Retrofit2的实例Retrofit retrofit=new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).build();
//       ⑤ 创建网络请求接口MoviesService的实例,并在接口中配置网络请求参数MoviesService moviesService=retrofit.create(MoviesService.class);
//        ⑥发送网络请求Call<MovieEntity> call=moviesService.getTopMovie(0,10);call.enqueue(new Callback<MovieEntity>() {@Overridepublic void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {tv_mTv_content.setText(response.toString());}@Overridepublic void onFailure(Call<MovieEntity> call, Throwable t) {tv_mTv_content.setText(t.getMessage());}});}/*** 结合RxJava进行网络请求*/private void getMoviewByRxJava() {String baseUrl = "https://api.douban.com/v2/movie/";//      ④  创建Retrofit2的实例Retrofit retrofit=new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();
//       ⑤ 创建网络请求接口MoviesService的实例,并在接口中配置网络请求参数MoviesServiceRxJava moviesServiceRxJava=retrofit.create(MoviesServiceRxJava.class);moviesServiceRxJava.getMovies(0,10).subscribeOn(io.reactivex.schedulers.Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<MovieEntity>() {@Overridepublic void onSubscribe(Disposable d) {Toast.makeText(getApplicationContext(),"执行了onSubscribe()方法",Toast.LENGTH_SHORT).show();}@Overridepublic void onNext(MovieEntity movieEntity) {tv_mTv_content.setText( movieEntity.toString());Toast.makeText(getApplicationContext(),"执行了onNext()方法",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(Throwable e) {tv_mTv_content.setText(e.getMessage().toString());Toast.makeText(getApplicationContext(),"执行了onError()方法",Toast.LENGTH_SHORT).show();}@Overridepublic void onComplete() {tv_mTv_content.setText("完成!");Toast.makeText(getApplicationContext(),"执行了onComplete()方法",Toast.LENGTH_SHORT).show();}});}
}

GitHub地址:https://github.com/yangtianfu2018/Retrofit2RxJava2ButterKnife
附:RxJava执行原理图

Retrofit2+RxJava2+ButterKnife框架搭建步骤相关推荐

  1. JEECG - 基于代码生成器的J2EE智能开发框架 续一: JEECG框架搭建步骤 [更新版]

    提醒: A.项目开发环境:   MyEclipse6.5 + jdk1.6 + Tomcat6.0 ; B.目前已经测试通过的数据库有MySql5.Oracle10g.SqlServer200 C.建 ...

  2. SSH(Spring+Struts2+Hibernate)框架搭建步骤(含配置文件以及运行结果)

    1.创建web项目 2.导入ssh 所需要的多有jar包,到web-inf下面的lib里面 3.将导入过来的jar包都build--path一下 4.切换到myeclipse database视图中, ...

  3. [转载]SSH框架搭建详细图文教程

    什么是SSH? SSH对应 struts spring hibernatestruts 采用MVC模式,主要是作用于用户交互spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合hiber ...

  4. pytest接口自动化框架搭建

    目录: 一.设计思路-整体框架: 二.具体框架搭建 1.公共方法-common 1.1.yaml_util.py 1.2.excel_util.py 1.4.text_ util.py 1.5.exc ...

  5. 鸿蒙开发之网络框架搭建,MVP+Retrofit2+okhttp3+Rxjava2+RxHarmony

    抓住人生中的一分一秒,胜过虚度中的一月一年! 小做个动图开篇引题 鸿蒙背景 2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,在20 ...

  6. Android MVVM框架搭建(三)MMKV + Room + RxJava2

    Android MVVM框架搭建(三)MMKV + Room + RxJava2 前言 正文 一.添加依赖 二.MMKV 1. 初始化 2. 数据存取 3. 使用 三.Room 1. @Entity ...

  7. python虚拟环境搭建安装flask框架_Flask框架搭建虚拟环境的步骤分析

    本文实例讲述了Flask框架搭建虚拟环境的步骤.分享给大家供大家参考,具体如下: 为什么要搭建虚拟环境? 在开发过程中, 当需要使用python的某些工具包/框架时需要联网安装 比如联网安装Flask ...

  8. SpringMVC框架刘宝宝深度版——Springmvc搭建步骤

    搭建步骤两种方法三种样式 第一种样式:         1.创建web项目         2.在lib文件下导入7个jar                   3.在web.xml中,配置      ...

  9. struts2 web应用框架的简单搭建步骤

    Struts2 Struts2的工作流程: 在Struts2视图层,获取数据,交给action处理,再返回到视图层. 一.什么是Strues2 Struts2是一个基于MVC设计模式的Web应用框架, ...

  10. SSM框架搭建的步骤

    SSM框架搭建的步骤 1. 导入Spring.SpringMVC.MyBatis的依赖 2. 导入Spring.SpringMVC.MyBatis的配置文件 3. 在Spring的配置文件中配置如下内 ...

最新文章

  1. linux下给php安装pdo_mysql和zlib以及测试模式的选择(禅道安装过程中遇到的问题)...
  2. CAS机制中的ABA问题
  3. LVS-NAT搭建HTTP及HTTPS
  4. 大学生英语fif测试系统_英语听力解题技巧
  5. c#获取屏幕上某坐标点的颜色
  6. python中用来占位的语句是_MySQL / Python-gt;语句中占位符的语法错误?
  7. 数字信号处理设计与仿真分析
  8. react自定义鼠标右键菜单
  9. 排行前五的web3风投公司2022年都投了什么
  10. 新书上市第13天,在亚马逊Kindle电子书人工智能榜第三,与《未来简史》和李开复《人工智能》同榜
  11. Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务
  12. jsp页面转为html5,eclipse 设置jsp页面为HTML5
  13. Python_oldboy_自动化运维之路_线程,进程,协程(十一)
  14. 细数红帽linux系统下的各个文件夹作用
  15. Python文件操作-写文本文件
  16. dev 服务器调试过程
  17. 曹政--互联网搜索老师傅
  18. 简述计算机网络测试和故障诊断的发展趋势,网络测试和故障诊断
  19. Linux网络编程 入门
  20. Java--SSH,SSM和Spring Boot框架区别优缺点

热门文章

  1. GAN 生成对抗网络 10-6 Tips for improving GAN
  2. 手把手带你搭建一个简单的webpack脚手架(一)
  3. 10827 - Maximum sum on a torus
  4. Description Resource Path Location Type Cannot change version of project fac(导入maven项目出现红叉问题)...
  5. python不合法的布尔表达式,python笔试题22-41
  6. 关于公布部分非法刊物的通知及冀职改办字[2006]48号
  7. ruoyi-cloud代码生成(跨数据库)
  8. 华为3COM正式更名为『杭州华三通信技术有限公司(H3C)』
  9. ipad上的游戏服务器无响应,教你 game center无法连接服务器解决办法及iOS9.3.2公测版已修复GameCenter无响应bug...
  10. 手机便签软件哪个好用 手机便签软件推荐