之前写过一篇这样的博客,当时初学理解不够透彻,写法比较不实用。开发过程中,渐渐学习到了正确的使用方式,在这里简单记录一下
需要引入的包
//rxjava"rxjava" : 'io.reactivex.rxjava2:rxjava:2.1.12',//rxandroid"rxandroid" : 'io.reactivex.rxjava2:rxandroid:2.0.2',//retrofit"retrofit" : 'com.squareup.retrofit2:retrofit:2.4.0',//converter-gson retrofit的gson转换器"converter" : 'com.squareup.retrofit2:converter-gson:2.4.0',//retrofit2-rxjava2-adapter"adapter" : 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0',//okhttp3:logging-interceptor"interceptor": 'com.squareup.okhttp3:logging-interceptor:3.9.1'
建立serviceapi类 存放所有请求
就不在贴代码了
HttpHelper代码(主要比之前增加了单例模式,以及不用每个请求写一个方法)
public class HttpHelper {static HttpHelper httpHelper;public static HttpHelper getInstance(){if (httpHelper == null){synchronized (HttpHelper.class){if(httpHelper == null){httpHelper = new HttpHelper();}}}return httpHelper;}OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(2, TimeUnit.MINUTES).writeTimeout(2, TimeUnit.MINUTES).readTimeout(2, TimeUnit.MINUTES).build();Retrofit retrofit = new Retrofit.Builder().baseUrl(SpUtils.getInstance().getBaseUrl())//基地址.client(okHttpClient).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();ApiService serviceApi = retrofit.create(ApiService.class);public ApiService getServiceApi(){return retrofit.create(ApiService.class);}}
使用的方法也略有改变
HttpHelper.getInstance().getServiceApi().getData(map)//serviceapi接口中的请求.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<PushClientBean>() {//匿名写法也有改变@Overridepublic void onSubscribe(Disposable d) {Log.e("onSubscribe",""+d.toString());}@Overridepublic void onNext(PushClientBean bean) {Log.e("onNext",""+bean.toString());}@Overridepublic void onError(Throwable e) {Log.e("onError",""+e.toString());}@Overridepublic void onComplete() {Log.e("onComplete","onComplete");}});