一、導(dǎo)入依賴
implementation'io.reactivex.rxjava2:rxjava:2.1.3'
implementation'com.squareup.retrofit2:retrofit:2.3.0'
implementation'com.squareup.retrofit2:converter-gson:2.3.0'
implementation'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation'io.reactivex.rxjava2:rxandroid:2.0.1'
二、.創(chuàng)建接口Apiservise?
?//使用注解設(shè)置請(qǐng)求方式(填入請(qǐng)求地址) @GET("nc/article/headline/T1348647909107/0-20.html")?
?//創(chuàng)建Observble方法并指定泛型它的泛型是需要解析數(shù)據(jù)的實(shí)體類(lèi)?
?Observable<TouTiao(泛型為你自己的實(shí)體類(lèi))> getTouTiao();?
三、在需要解析的地方獲取Retrofit對(duì)象?
?//獲取Retrofit對(duì)象?
Retrofit build = new Retrofit.Builder()//設(shè)置Uri(填入請(qǐng)求方式) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????.baseUrl("http://172.16.54.18:8080/")//添加Rxjava并開(kāi)啟 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????.addCallAdapterFactory(RxJava2CallAdapterFactory.create())//添加Gson析 ? ? ? ? ? ? ? ? ? ? ? .addConverterFactory(GsonConverterFactory.create(new Gson())).build();
//使用Retrofit對(duì)象開(kāi)啟定義好的接口Apiservse?
?Apiservce apiservce = build.create(Apiservce.class);
//通過(guò)開(kāi)啟的Apiservse對(duì)象獲取它的方法?
?apiservce.getTouTiaoData()
????????????????//因?yàn)榻馕鲂枰谧泳€程中進(jìn)行所以開(kāi)啟子線程
?????????????????.subscribeOn(Schedulers.newThread())
????????????????//得不到返回?cái)?shù)據(jù)時(shí)將再次訪問(wèn)
????????????????????.retry()
????????????????//通過(guò)觀察者模式返回主線程
?????????????????.observeOn(AndroidSchedulers.mainThread())
????????????????//通過(guò)子線程獲取到需要的數(shù)據(jù)
?????????????????.subscribe(new Consumer() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void accept(TouTiao touTiao) throws Exception {
????????????????//touTiao為獲取到的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? data.getTouTiao(touTiao.getResult().getData());
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });