RxJava+Retrofit实现网络请求

RxJava+Retrofit实现网络请求:

首先要添加依赖

  compile ‘io.reactivex:rxjava:x.y.z‘
  compile ‘io.reactivex:rxandroid:1.0.1‘
  compile ‘com.squareup.retrofit2:retrofit:2.0.2‘
  compile ‘com.squareup.retrofit2:converter-gson:2.0.2‘
  compile ‘com.squareup.retrofit2:adapter-rxjava:2.0.2‘

1、创建Retrofit请求的网络接口

public interface RetrofitAPI {

    //登录
    @FormUrlEncoded
    @POST(Constant.LOGIN)
    Observable<Responseinfo<LoginBean>> setLogin(@Field("mobile") String phone, @Field("pwd") String pwd);

    //注册
    @FormUrlEncoded
    @POST(Constant.REGISTE)
    Observable<Responseinfo<RegisteBean>> getUserId(@Field("mobile") String id, @Field("pwd") String token, @Field("channel") int channel);
}

2、创建Retrofit和RxJava的对象

public class RetrofitHelper {
    //设置网络请求默认的超时时间
    private static final int DEFAULT_TIME_OUT = 10;
    private static Retrofit sRetrofit;
    private static OkHttpClient sOKHttpClient;

    public static RetrofitAPI getRetrofitAPI(){
        return getInstance().create(RetrofitAPI.class);
    }

    public static Retrofit getInstance(){
        if(sRetrofit== null){
            synchronized (RetrofitHelper.class){
                if(sRetrofit == null){
                    sRetrofit = new Retrofit.Builder()
                            .baseUrl(Constant.BASEURL)
                            .addConverterFactory(GsonConverterFactory.create())
                            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                            .client(getsOKHttpClient())
                            .build();

                }
            }
        }

        return sRetrofit;
    }

    public static OkHttpClient getsOKHttpClient(){
        if(sOKHttpClient == null){
            synchronized (RetrofitHelper.class){
                if(sOKHttpClient == null){
                    sOKHttpClient = new OkHttpClient.Builder()
                            .connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
                            .readTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
                            .writeTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
                            .build();
                }
            }
        }

        return sOKHttpClient;
    }

}

3、开启网络请求

private void requestLoginNet(String mobile, String pwd) {
        //登录的接口
        RetrofitHelper.getRetrofitAPI()
                .setLogin(mobile, pwd)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Responseinfo<LoginBean>>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(Responseinfo<LoginBean> response) {
                        if (response == null){
                            return;
                        }
                        int result = response.getResult();
                    }
                });

    }
时间: 2024-08-10 23:26:14

RxJava+Retrofit实现网络请求的相关文章

RxJava + Retrofit完成网络请求

1.前言 本文基于RxJava.Retrofit的使用,若是对RxJava或Retrofit还不了解的简友可以先了解RxJava.Retrofit的用法再来看这篇文章. 在这片文章之前分别单独介绍过Rxjava以及Retrofit的使用: Android Retrofit 2.0 的使用 Android RxJava的使用(一)基本用法 2.使用 在了解了RxJava和Retrofit分别的用法后,RxJava.Retrofit的搭配使用也就不再话下了. 先看看使用Retrofit完成一次网络请

rxjava 调用retrofit执行网络请求的过程

retrofit流程图 -1.RxJava调用Retrofit,从requestGtPushSaeUserInfo()中获得被观察者observable,然后new一个观察者向它订阅 0.从业务中发起网络请求调用具体接口 RobotApiService就是Retrofit需要的接口文件 1.在RobotApiService文件中会新建一个Retrofit对象添加RxJava2CallAdapterFactory对象用以产生RxJava2CallAdapter, Retrofit retrofit

使用 RxJava+Retrofit进行数据请求,并放在RecycleView中使用fresco加载图片

首先是依赖: compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.okhttp3:logging-intercepto

带你一步步剖析Retrofit 源码解析:一款基于 OkHttp 实现的网络请求框架

OkHttp与Retrofit 的区别与联系是怎样的? 参考答案:OkHttp和Retrofit都是目前流行网络开源框架 封装不同:Retrofit封装了具体的请求,线程切换以及数据转换.retrofit通过使用代理,外观,策略模式对okhttp进行了封装OkHttp 是基于Http协议封装的一套请求客户端 职责不同:Retrofit主要负责应用层面的封装,面向开发者,方便使用,比如请求参数,响应数据的处理,错误处理等等.OkHttp主要负责socket部分的优化与封装,比如网络访问,多路复用,

Rxjava+ReTrofit+okHttp深入浅出-终极封装

Rxjava+ReTrofit+okHttp深入浅出-终极封装 背景: 学习Rxjava和retrofit已经很长时间了,功能确实很强大,但是使用起来还是有点复杂,代码的重复性太高,所以决定把基于retrofit和rxjava的处理统一封装起来,实现的功能: 1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一的ProgressDialog和回调Subscriber处理 4.取消http请求 5.预处理http请求 5.返回数据的统一判断 效果: 封装

使用Retrofit和Rxjava让你的网络请求更简单

去年的时候好多公司就已经使用Rxjava和Retrofit了,最近自自己学习了一下,感觉真的是很好用,让自己的网络请求变得更简单了,而且封装性极强. 首先做一下准备工作,导入需要引用的文件 compile 'com.android.support:appcompat-v7:25.1.0' testCompile 'junit:junit:4.12' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0'

基于Retrofit+RxJava的Android分层网络请求框架

目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及数据传输安全性高等特点. Retrofit源码更是经典的设计模式教程,笔者已在之前的文章中分享过自己的一些体会,有兴趣的话可点击以下链接了解:<Retrofit源码设计模式解析(上)>.<Retrofit源码设计模式解析(下)> 但在具体业务场景下,比如涉及到多种网络请求(GET/PU

Android探索之基于okHttp打造自己的网络请求&lt;Retrofit+Okhttp&gt;(五)

前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少收有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下Retrofit+Okhttp的搭配使用. Retrofit介绍: Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdap

Retrofit2.0+RxJava+RxAndroid——强强联合的网络请求框架

最近看了很多关于Retrofit和Rxjava的文档介绍.终于在弄清Rxjava后顺利的弄懂了Retrofit. 网上有很多人都介绍了它们的联合使用,但是我看过之后理解不是太好.可能我太笨. 不过,今天写这篇博客的目的就是想来说说它们之间如何使用以及使用的时候遇到的坑. 这两者的关系并不大,但是联合在一起使用是非常简便的.Rxjava的响应式编程加上Retrofit的注解式请求用起来是非常爽的. 并且Retrofit内置的是Okhttp,所以这更加的让Retrofit变得强大. 如果在看这篇博客