封住Rxjava+Retrofit 的網路請求
阿新 • • 發佈:2018-12-20
public class HttpUtils { private BaseService baseService; private Observable<ResponseBody> observable; public HttpUtils(){ Retrofit retrofit = new Retrofit.Builder() .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .baseUrl("http://www.zhaoapi.cn/") .build(); baseService = retrofit.create(BaseService.class); } public HttpUtils get(String url, Map<String,String>map){ if(map==null){ map = new HashMap<>(); } observable = baseService.get(url,map); setObservable(); return this; } public HttpUtils post(String url, Map<String,String>map){ if(map==null){ map = new HashMap<>(); } observable = baseService.post(url,map); setObservable(); return this; } private void setObservable() { observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } private Observer observer = new Observer<ResponseBody>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseBody responseBody) { try { String string = responseBody.string(); listener.success(string); } catch (IOException e) { e.printStackTrace(); } } @Override public void onError(Throwable e) { String message = e.getMessage(); listener.fail(message); } @Override public void onComplete() { } } ; private HttpListener listener; public void result(HttpListener listener){ this.listener=listener; } public interface HttpListener{ void success(String data); void fail(String error); } }