Retrofit+Rxjava网络请求的使用

添加依赖

    //retrofit网络请求框架
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    //retrofit添加Json解析返回数据
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'com.orhanobut:logger:2.1.0' // 打印日志

具体使用

第一步,先生成需要请求的json数据的,bean类。

public class NewBean {

    /**
     * res_code : 200
     * err_msg :
     * demo : {"id":"1001","name":"sss","appid":"1022","showtype":"text"}
     */
    private int res_code;
    private String err_msg;
    private DemoBean demo;

    public int getRes_code() {
        return res_code;
    }

    public void setRes_code(int res_code) {
        this.res_code = res_code;
    }

    public String getErr_msg() {
        return err_msg;
    }

    public void setErr_msg(String err_msg) {
        this.err_msg = err_msg;
    }

    public DemoBean getDemo() {
        return demo;
    }

    public void setDemo(DemoBean demo) {
        this.demo = demo;
    }

    public static class DemoBean {
        /**
         * id : 1001
         * name : sss
         * appid : 1022
         * showtype : text
         */

        private String id;
        private String name;
        private String appid;
        private String showtype;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAppid() {
            return appid;
        }

        public void setAppid(String appid) {
            this.appid = appid;
        }

        public String getShowtype() {
            return showtype;
        }

        public void setShowtype(String showtype) {
            this.showtype = showtype;
        }

        @Override
        public String toString() {
            return "DemoBean{" +
                    "id='" + id + '\'' +
                    ", name='" + name + '\'' +
                    ", appid='" + appid + '\'' +
                    ", showtype='" + showtype + '\'' +
                    '}';
        }
    }

    @Override
    public String toString() {
        return "NewBean{" +
                "res_code=" + res_code +
                ", err_msg='" + err_msg + '\'' +
                ", demo=" + demo +
                '}';
    }
}

第二步,创建一个api地址接口

    // 无带参数的get请求
    @GET("values/5")
    Call<NewBean> getRetrofit();

在调用处使用

public void getRetrofit() {
        OkHttpClient client = new OkHttpClient().newBuilder()
                //设置读取超时的时间
                .readTimeout(10, TimeUnit.SECONDS)
                //设置连接超时的时间
                .connectTimeout(10,TimeUnit.SECONDS)
                //设置写入超时的时间
                .writeTimeout(10,TimeUnit.SECONDS)
                //添加打印拦截器
                .addInterceptor(new HttpLoggingInterceptor())
                //设置出现错误进行重新连接
                .retryOnConnectionFailure(true)
                .build();

        Retrofit retrofit =new Retrofit.Builder()
                .client(client)
                //基地址
                .baseUrl("http://120.78.186.81/api/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        ApiUrl api = retrofit.create(ApiUrl.class);
        Call<NewBean> demo =api.getRetrofit();
        demo.enqueue(new Callback<NewBean>() {
            @Override
            public void onResponse(Call<NewBean> call, Response<NewBean> response) {
                Log.e("DJ", "请求成功信息: "+response.body().toString());
                tv_success.setText(response.body().toString());
                NewBean newBean =new NewBean();
                int res_code = newBean.getRes_code();
                Log.e("DJ", "res_code: "+res_code);
            }

            @Override
            public void onFailure(Call<NewBean> call, Throwable t) {
                Log.e("DJ", "请求失败信息: " +t.getMessage());
                tv_fail.setText(t.getMessage());
            }
        });

    }

Retrofit+Rxjava

添加依赖:

//retrofit网络请求框架
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
//retrofit添加Json解析返回数据
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
//retrofit添加Rxjava支持
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//rxjava框架
implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
public interface ApiUrl {

    @GET(ContentsJson.BASE_ONE_JSON_DAN_ONE1)
    Call<DataBean1> getRetrofit();

    @GET(ContentsJson.BASE_ONE_JSON_DAN_ONE1)
    Observable<DataBean1> getDemo();

}

具体使用

private void getRetrofit() {
        OkHttpClient client = new OkHttpClient().newBuilder()
                .readTimeout(ContentsJson.DEFAULT_TIME, TimeUnit.SECONDS)//设置读取超时时间
                .connectTimeout(ContentsJson.DEFAULT_TIME, TimeUnit.SECONDS)//设置请求超时时间
                .writeTimeout(ContentsJson.DEFAULT_TIME,TimeUnit.SECONDS)//设置写入超时时间
                .addInterceptor(new LogInterceptor())//添加打印拦截器
                .retryOnConnectionFailure(true)//设置出现错误进行重新连接。
                .build();
        Retrofit retrofit = new Retrofit.Builder()
                .client(client)
                .baseUrl(ContentsJson.URL_BASE)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                //添加GSON解析:返回数据转换成GSON类型
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        Log.e("RetrofitActivity","----getDemo:");
        ApiUrl api = retrofit.create(ApiUrl.class);
        api.getDemo().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<DataBean1>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(DataBean1 dataBean1) {
                String chinesename = dataBean1.getLine_fourteen().getContent().getPage_data().get(0).getChinesename();
                Log.e("RetrofitActivity","----chinesename:"+chinesename);
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值