RxJava和Retrofit结合使用 封装类
2018-01-30 22:22
302 查看
//添加依赖和权限
//工具类
//调用
//请求网络工具类
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"; }
相关文章推荐
- Android 中 Retrofit 结合 RxJava使用
- Retrofit结合RxJava使用指南
- RxJava和Retrofit2.0的结合使用
- retrofit2+rxjava的结合使用
- 使用MVP框架,retrofit结合Rxjava以及fresco加载图片,用recycleview实现
- 结合retrofit和rxJava 的 Novate第三方的使用
- Retrofit+Rxjava结合使用(三)
- Retrofit结合RxJava1.x使用
- Retrofit结合rxjava使用
- Retrofit+Rxjava结合使用封装
- Retrofit与Rxjava结合使用
- 结合retrofit和rxjava的使用
- Retrofit 与Rxjava完美结合使用
- Android 中 Retrofit 结合 RxJava使用
- Android RxJava/RxAndroid结合Retrofit使用
- rxjava 和retrofit 结合使用 请求网络
- Retrofit结合RxJava1.x使用,RxJava变换flatMap和Map的使用
- Retrofit与RxJava的结合使用
- RxJava和Retrofit的结合封装使用
- Android RxJava/RxAndroid结合Retrofit使用