//还是先定义个类API用来存放网络地址
public class Api {
public static final String BASE_PATH = "http://service.meiyinkeqiu.com/service/";
public static final String BASE_URL = "https://api.github.com/";
}
//然后定义个类设置网络接口,注意这是RXJava的
public interface ApiService {
/**
* 结合Retrofit+RxJava
* thtp://service.meiyinkeqiu.com/service/ads/cptj
* @param
* @return
*/
@GET("ads/cptj")
Observable<News> getNoParams();
/**
* 结合RxJava
* @param user
* @return
* https://api.github.com/users/forever
*/
@GET("users/{user}")
Observable<User> getHasParams(@Path("user")String user);
}
///接着在主界面上做网络请求操作
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getNoParams();
}
private void getNoParams() {
Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_PATH).addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava
.build();
ApiService apiService = retrofit.create(ApiService.class);
//得到Observable
Observable<News> observable = apiService.getNoParams();//生产事件
//被观察者订阅观察 默认在同一个线程
observable.subscribeOn(Schedulers.io())//指定IO做耗时操作
.observeOn(AndroidSchedulers.mainThread())//指定更新UI在主线程
.subscribe(new Observer<News>() {
@Override
public void onCompleted() {//完成
}
@Override
public void onError(Throwable e) {//失败
Log.i("xxx", e.getMessage());
}
@Override
public void onNext(News news) {//消费事件
List<News.AdsBean> ads = news.getAds();
for (int i = 0; i < ads.size(); i++) {
News.AdsBean adsBean = ads.get(i);
String gonggaoren = adsBean.getGonggaoren();
Log.i("xxx", gonggaoren);
}
}
});
}
}
//这是有参数的方法
public void getModel(String page){ Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.beanUrl).addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava .build(); final ApiServer apiServer = retrofit.create(ApiServer.class); //得到Observable Observable<List<ItemBean>> observable = apiServer.getNopar(page);//生产事件 //被观察者订阅观察 默认在同一个线程 observable.subscribeOn(Schedulers.io())//指定IO做耗时操作 .observeOn(AndroidSchedulers.mainThread())//指定更新UI在主线程 .flatMap(new Func1<List<ItemBean>, Observable<ItemBean>>() { @Override public Observable<ItemBean> call(List<ItemBean> itemBeen) { return Observable.from(itemBeen); } }).subscribe(new Observer<ItemBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(ItemBean itemBean) { String title = itemBean.getData().get(0).getTitle(); Log.e("TAG-----",title); } }); }
//记着如果Bean包刚开始就是数组,数组里面有集合,那么他就得改变泛型了
@GET("{page}") Observable<List<ItemBean>> getNopar(@Path("page")String page);