美文网首页
RxJava2.0+Retrofit请求网络数据

RxJava2.0+Retrofit请求网络数据

作者: Endeav0r | 来源:发表于2017-06-28 15:04 被阅读770次
本文只做简单步骤以作记录.

1.添加依赖

// RxJava2.0
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
// Retrofit
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'// retrofit+gson
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' // Rxjava与Retrofit结合使用必须添加这个依赖

2.创建Builder,配置信息

Retrofit.Builder builder = new Retrofit.Builder();
builder.baseUrl(Api.SERVER_IP);
builder.addConverterFactory(GsonConverterFactory.create());
//设置Adapter  
//不设置这个会报错:Could not locate call adapter for io.reactivex.Observable<retrofit2.Response<type··>>
builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create());

3.构建Retrofit对象

    Retrofit retrofit = builder.build();

4.配置参数和链接

public interface ApiInfo{
    @POST(Api.GetCarBrand)
    Observable<BrandResponse> getCarBrand();// 这里类型为Observable,泛型为JavaBean
}

5.发起请求

 ApiInfo api = retrofit.create(ApiInfo.class);
    Observable<BrandResponse> observable = api.getCarBrand();
    observable.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<BrandResponse>() {
                @Override
                public void onSubscribe(Disposable d) {
                    progressBar.setVisibility(View.VISIBLE);
                }

                @Override
                public void onNext(BrandResponse brand) {

                    Log.e("ende","onNext:"+brand.toString());
                }



                @Override
                public void onError(Throwable e) {
                    progressBar.setVisibility(View.GONE);
                    Log.e("ende","onError:"+e.toString());
                }

                @Override
                public void onComplete() {
                    progressBar.setVisibility(View.GONE);
                    Toast.makeText(TowActivity.this,"请求完成",Toast.LENGTH_SHORT).show();
                }
            });

6.请求结果

 onNext:BrandResponse{msg='', status=0, success=true, data=[DataBean{carBrandNm='宝马', carBrandNo='10'}, DataBean{carBrandNm='奔驰', carBrandNo='11'}, DataBean{carBrandNm='长城', carBrandNo='12'}]}

相关文章

  • RxJava2.0+Retrofit请求网络数据

    本文只做简单步骤以作记录. 1.添加依赖 2.创建Builder,配置信息 3.构建Retrofit对象 4.配置...

  • swift 网络请求封装

    swift 网络请求封装 Alamofire 请求网络数据,Haneke 完成缓存, ObjectMapper 自...

  • 网络数据请求

    URL URL全称是 Uniform Resource Locator(统一资源定位符).也就是说,通过一个 UR...

  • 网络数据请求

    #import "ViewController.h" @interface ViewController ()//...

  • 网络请求——OkHttp3的简单使用

    我们敲代码总是离不开网络请求。网络请求就是想服务器请求数据,一般请求到的数据就是我们列表上要展示数据的数据源。现在...

  • AFet解析

    -(void)loadData{//使用(网络请求类)做网络数据请求NSDictionary *dic=@{@"p...

  • iOS之网络简解篇.

    网络 HTTP请求 GET请求 POST请求 数据解析 JSONNSJSONSerialization XMLSA...

  • 一.基于AFN的简单网络架构

    manager管理网络请求 client发送网络(网络层) service处理数据(数据层,处理网络返回来的数据)...

  • Flutter GetX的MVC框架使用

    一、网络请求封装 创建ApiService用于网络请求数据。 二、定义模型类用于数据转模型 三、Controlle...

  • 16.无限轮播之数据请求

    6.请求轮播数据 6.1网络请求继续封装在ViewModel中 懒加载一个轮播模型数据 发送网络请求 6.2 回到...

网友评论

      本文标题:RxJava2.0+Retrofit请求网络数据

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