今天就写一个简单的Retrofit+Rxjava的联合运用的代码
这是一个请求的接口返回给观察者
Observable是被观察者,Observe是观察者
@FormUrlEncoded @POST("getCourseByTypeAndMore?") Observable<Bean>getPost(@FieldMap HashMap<String,String> map);
这是在m层
@Override public Observable<Bean> getDatas(HashMap<String, String> map) { //创建Retrofit的对象 ApiService apiService = new Retrofit.Builder() //添加Gson和RxJava .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //添加网址注意一定要‘/’结尾 .baseUrl(Constant.BASE_UEL) .build() .create(ApiService.class); //返回对象 Observable<Bean> post = apiService.getPost(map); return post; }
//返回json解析后的对象,这是在p层
@Override public void getDatas(HashMap<String, String> map) { Observable<Bean> datas = m.getDatas(map); datas .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Bean>() { @Override public void call(Bean bean) { System.out.println("===============" + bean.getBody().getResult().getData()); v.show(bean); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { v.errorMessage(throwable.getMessage()); } }); }
在v层
HashMap<String, String> map = new HashMap<>(); map.put("orderOn", ""); map.put("classtype", "031001004"); map.put("forPeopleType", ""); map.put("format", ""); map.put("price", ""); map.put("pageIndex", "1"); map.put("pageSize", "10"); map.put("classTag", ""); mPresenter.getDatas(map);
Post请求 这样的喜欢的话可以直接这么写
@POST("getCourseByTypeAndMore?orderOn=&classtype=031001004&forPeopleType=&format=&price=&pageIndex=1&pageSize=10&classTag=") Observable<Bean>getPost();感谢观看