Retrofit+Rxjava简单的网络请求

来源:互联网 发布:厦门三套网络电视台 编辑:程序博客网 时间:2024/05/23 11:45

//导入依赖

compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

//创建Apiservice接口类
package android_rxjava.baway.com.retrofitandrxjava;import retrofit2.http.GET;import rx.Observable;/** * Created by C-PC on 2017/11/5. */public interface ApiService {    /**     * 结合Retrofit+RxJava     * http://service.meiyinkeqiu.com/service/ads/cptj     * @param     * @return     */    @GET("ads/cptj")    Observable<News> getNoParams();} 
//Mainactivity类

package android_rxjava.baway.com.retrofitandrxjava;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import java.util.List;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Observable;import rx.Observer;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;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())                .build();        ApiService apiService = retrofit.create(ApiService.class);        Observable<News> observable = apiService.getNoParams();//生产事件        //被观察者订阅观察 默认在同一个线程        observable.subscribeOn(Schedulers.io())//指定IO做耗时操作                .observeOn(AndroidSchedulers.mainThread())                .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);                        }                    }                });    }    ;}

//bean类

package android_rxjava.baway.com.retrofitandrxjava;import java.util.List;/** * 1. 类的用途 * 2. @author forever * 3. @date 2017/11/2 13:29 */public class News {    private List<AdsBean> ads;    private List<List<String>> dropdown;    public List<AdsBean> getAds() {        return ads;    }    public void setAds(List<AdsBean> ads) {        this.ads = ads;    }    public List<List<String>> getDropdown() {        return dropdown;    }    public void setDropdown(List<List<String>> dropdown) {        this.dropdown = dropdown;    }    public static class AdsBean {        /**         * id : 126         * imgsrc : https://service.meiyinkeqiu.com/upload/back/ads/1127f70b-f163-4a25-886b-9fb057e30c77.png         * url : https://service.meiyinkeqiu.com/service/infomation.html?id=676https://service.meiyinkeqiu.com/service/infomation.html?id=676https://service.meiyinkeqiu.com/service/infomation.html?id=676         * type : cptj         * adsorder : 1         * typecn : null         * gonggaoren : 黑龙江风骨科技有限公司         * timelength : 30         * state : 1         * ptime : 2017-10-28 18:26:51         * lianjietype : 内部         * docid : 676         * menuurl : hyzx         * infotype : 1         */        private int id;        private String imgsrc;        private String url;        private String type;        private int adsorder;        private Object typecn;        private String gonggaoren;        private int timelength;        private int state;        private String ptime;        private String lianjietype;        private String docid;        private String menuurl;        private String infotype;        public int getId() {            return id;        }        public void setId(int id) {            this.id = id;        }        public String getImgsrc() {            return imgsrc;        }        public void setImgsrc(String imgsrc) {            this.imgsrc = imgsrc;        }        public String getUrl() {            return url;        }        public void setUrl(String url) {            this.url = url;        }        public String getType() {            return type;        }        public void setType(String type) {            this.type = type;        }        public int getAdsorder() {            return adsorder;        }        public void setAdsorder(int adsorder) {            this.adsorder = adsorder;        }        public Object getTypecn() {            return typecn;        }        public void setTypecn(Object typecn) {            this.typecn = typecn;        }        public String getGonggaoren() {            return gonggaoren;        }        public void setGonggaoren(String gonggaoren) {            this.gonggaoren = gonggaoren;        }        public int getTimelength() {            return timelength;        }        public void setTimelength(int timelength) {            this.timelength = timelength;        }        public int getState() {            return state;        }        public void setState(int state) {            this.state = state;        }        public String getPtime() {            return ptime;        }        public void setPtime(String ptime) {            this.ptime = ptime;        }        public String getLianjietype() {            return lianjietype;        }        public void setLianjietype(String lianjietype) {            this.lianjietype = lianjietype;        }        public String getDocid() {            return docid;        }        public void setDocid(String docid) {            this.docid = docid;        }        public String getMenuurl() {            return menuurl;        }        public void setMenuurl(String menuurl) {            this.menuurl = menuurl;        }        public String getInfotype() {            return infotype;        }        public void setInfotype(String infotype) {            this.infotype = infotype;        }    }}
//Api类

package android_rxjava.baway.com.retrofitandrxjava;/** * Created by C-PC on 2017/11/5. */public class Api {    public static final String BASE_PATH = "http://service.meiyinkeqiu.com/service/";    public static final String BASE_URL = "https://api.github.com/";}

原创粉丝点击