RxJava和Retrofit结合使用 封装类
2018-02-05 11:32
295 查看
//添加依赖和权限
//工具类
//调用
//请求网络工具类
compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'compile 'com.squareup.okhttp3:okhttp:3.6.0' compile 'com.squareup.okio:okio:1.11.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'//日志拦截器
//工具类
public class RetrofitUtils { private static RetrofitUtils retrofitUtils;//工具类对象 private static ApiFunction apiFunction;//请求网络接口 public static OkHttpClient okHttpClient; //静态快,获取OkHttpClient对象 static { getOkHttpClient(); } //单例锁模式 public static RetrofitUtils getInstence(){ if(retrofitUtils==null){ synchronized (RetrofitUtils.class){ if (retrofitUtils==null){ retrofitUtils=new RetrofitUtils(); } } } return retrofitUtils; } //单例模式获取okhttp public static OkHttpClient getOkHttpClient(){ if(okHttpClient==null){ synchronized (OkHttpClient.class){ if(okHttpClient==null){ File fileDir = new File(Environment.getExternalStorageDirectory(), "cache"); long fileSize = 10 * 1024 * 1024; okHttpClient=new OkHttpClient.Builder() //打印拦截器日志 .addNetworkInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .connectTimeout(15, TimeUnit.SECONDS)//设置连接超时时间 .readTimeout(15, TimeUnit.SECONDS)//设置读取超时时间 .writeTimeout(15, TimeUnit.SECONDS)//设置写入超时时间 //.cache(new Cache(fileDir,fileSize))//写入sd卡 .build(); } } } return okHttpClient; } //私有的无参构造 private RetrofitUtils(){ Retrofit retrofit=new Retrofit.Builder() .baseUrl(Constants.Base_url) .addConverterFactory(GsonConverterFactory.create())//添加gson转换器 .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//添加rxjava转换器 .client(okHttpClient)//添加okhttp .build(); apiFunction=retrofit.create(ApiFunction.class); } //获取 public ApiFunction API(){ return apiFunction; } }
public interface ApiFunction { @POST @FormUrlEncoded Observable<BaseUser<User>> postRetrofit(@Url String url, @FieldMap Map<String,String> map); }
//调用
RetrofitUtils.getInstence() .API() .postRetrofit(Constants.login_url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<BaseUser<User>>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(BaseUser<User> value) { onListener.Success(value); } @Override public void onError(Throwable e) { onListener.Error(e.toString()); } @Override public void onComplete() { } });
//请求网络工具类
public class Constants { public static String Base_url="https://www.zhaoapi.cn/"; public static String login_url="user/login"; }
相关文章推荐
- Rxjava,retrofit,Rxjava结合使用与代码封装
- Retrofit+Rxjava结合使用封装
- RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
- RxJava和Retrofit的结合封装使用
- Retrofit+RXJava的结合使用与封装
- Material Design 风格 结合使用 Retrofit RxJava Jsoup Mvp 模式的一款资讯类 学习 app
- 安卓项目快速开发框架, MVP + Retrofit + RxJava,Activity 和 Fragment 结合 MVP 模式的完整封装,大大减少代码量
- 使用retrofit与Rxjava结合出的错误:java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker
- RXJava结合retrofit的简单使用
- MVP封装成基类结合retrofit和Rxjava
- Rxjava+Retrofit结合使用时的开发技巧
- Rxjava 和 Retrofit 的封装使用
- Retrofit结合Rxjava初步使用
- RxJava和Retrofit结合使用 封装类
- RxJava和Retrofit结合使用详解
- Retrofit + RxJava 的结合使用
- Retrofit 与Rxjava完美结合使用
- Retrofit结合RxJava1.x使用,RxJava变换flatMap和Map的使用
- 优雅地封装使用rxjava2+retrofit2发送http请求
- RxJava + Retrofit 结合使用