Retrofit基本使用方法

1.引入资源库

// Retrofit   https://www.jianshu.com/p/8066ae4fb1b2
    api "com.squareup.retrofit2:retrofit:2.3.0"
    api "com.squareup.retrofit2:converter-gson:2.3.0"
    api "com.squareup.retrofit2:adapter-rxjava2:2.3.0"

// OkHttp3
    api "com.squareup.okhttp3:okhttp:3.10.0"
    api "com.squareup.okhttp3:logging-interceptor:3.10.0"

// RxJava2
    api "io.reactivex.rxjava2:rxjava:2.1.9"
    api "io.reactivex.rxjava2:rxandroid:2.0.2"

// RxLifecycle
    api "com.trello.rxlifecycle2:rxlifecycle:2.2.1"
    api "com.trello.rxlifecycle2:rxlifecycle-android:2.2.1"
    api "com.trello.rxlifecycle2:rxlifecycle-components:2.2.1"

2.开始编写基础类RetrofitManager.class

public class RetrofitManager {
    static Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(“http://www.123.com/”)//这里写访问地址的前半部分,举个例子,如果是http//www.123.com/111,此处就写“http://www.123.com/”
            .addConverterFactory(GsonConverterFactory.create())//这行代码是增加Gson的转换方法,可以直接把请求到的结果转换成Bean(根据需要,可以删除)
            .build();

    public static Retrofit getRetrofit() {
        return retrofit;
    }
}

3.创建API.class文件---GET请求

4.使用GET方式调用网络请求

5.创建API.class文件---POST请求

6.使用POST方式调用网络请求

上面是Retrofi的简单用法,下面是一些其他用法,因为企业都是用post的方法进行的请求,所以例子我都用post来写

1.带有Header的POST请求:

API文件中写:

@FormUrlEncoded
@POST("111")//这里写地址的后半部分,例如全地址是"http://www.123.com/111",这里就写"111"
Call<ResponseBody>postResult(@FieldMap Map<String,String>params,@HeaderMap Map<String,String>headermap);

网络请求界面写:

private void httpPOST() {
    API api=RetrofitManager.getRetrofit().create(API.class);
    Map<String,String>params=new HashMap<>();//post请求时需要的参数
    params.put("key","value");
    params.put("key","value");
    Map<String,String>headermap=new HashMap<>();//header需要的参数
    headermap.put("header需要的key","header需要的value");
    headermap.put("header需要的key","header需要的value");
    retrofit2.Call<ResponseBody> resultcall=api.postResult(params,headermap);
    resultcall.enqueue(new retrofit2.Callback<ResponseBody>() {
        @Override
        public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
            //网络请求成功
            try {
                int httpcode=response.code();//获取返回的code,值为200时证明请求成功
                String result=response.body().string();//得到网络请求的结果

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {
            //网络请求失败
        }
    });
}

2.使用本地编写的bean接收网络请求返回的信息

2.1-API

@FormUrlEncoded
@POST("111")//这里写地址的后半部分,例如全地址是"http://www.123.com/111",这里就写"111"
Call<textBean>postResult(@FieldMap Map<String,String>params);

2.2-textBean.class(这个bean可以根据后台提供的返回值自己进行编写)

public class textBean {

    /**
     * word_name : good
     * is_CRI : 1
     * exchange : {"word_pl":["goods"],"word_third":"","word_past":"","word_done":"","word_ing":"","word_er":["better"],"word_est":["best"]}
     * symbols : [{"ph_en":"gʊd","ph_am":"ɡʊd","ph_other":"","ph_en_mp3":"http://res.iciba.com/resource/amp3/oxford/0/28/a2/28a24294fed307cf7e65361b8da4f6e5.mp3","ph_am_mp3":"http://res.iciba.com/resource/amp3/1/0/75/5f/755f85c2723bb39381c7379a604160d8.mp3","ph_tts_mp3":"http://res-tts.iciba.com/7/5/5/755f85c2723bb39381c7379a604160d8.mp3","parts":[{"part":"adj.","means":["好的","优秀的","有益的","漂亮的,健全的"]},{"part":"n.","means":["好处,利益","善良","善行","好人"]},{"part":"adv.","means":["同well"]}]}]
     */

    private String word_name;
    private String is_CRI;
    private ExchangeBean exchange;
    private List<SymbolsBean> symbols;

    public String getWord_name() {
        return word_name;
    }

    public void setWord_name(String word_name) {
        this.word_name = word_name;
    }

    public String getIs_CRI() {
        return is_CRI;
    }

    public void setIs_CRI(String is_CRI) {
        this.is_CRI = is_CRI;
    }

    public ExchangeBean getExchange() {
        return exchange;
    }

    public void setExchange(ExchangeBean exchange) {
        this.exchange = exchange;
    }

    public List<SymbolsBean> getSymbols() {
        return symbols;
    }

    public void setSymbols(List<SymbolsBean> symbols) {
        this.symbols = symbols;
    }

    public static class ExchangeBean {
        /**
         * word_pl : ["goods"]
         * word_third :
         * word_past :
         * word_done :
         * word_ing :
         * word_er : ["better"]
         * word_est : ["best"]
         */

        private String word_third;
        private String word_past;
        private String word_done;
        private String word_ing;
        private List<String> word_pl;
        private List<String> word_er;
        private List<String> word_est;

        public String getWord_third() {
            return word_third;
        }

        public void setWord_third(String word_third) {
            this.word_third = word_third;
        }

        public String getWord_past() {
            return word_past;
        }

        public void setWord_past(String word_past) {
            this.word_past = word_past;
        }

        public String getWord_done() {
            return word_done;
        }

        public void setWord_done(String word_done) {
            this.word_done = word_done;
        }

        public String getWord_ing() {
            return word_ing;
        }

        public void setWord_ing(String word_ing) {
            this.word_ing = word_ing;
        }

        public List<String> getWord_pl() {
            return word_pl;
        }

        public void setWord_pl(List<String> word_pl) {
            this.word_pl = word_pl;
        }

        public List<String> getWord_er() {
            return word_er;
        }

        public void setWord_er(List<String> word_er) {
            this.word_er = word_er;
        }

        public List<String> getWord_est() {
            return word_est;
        }

        public void setWord_est(List<String> word_est) {
            this.word_est = word_est;
        }
    }

    public static class SymbolsBean {
        /**
         * ph_en : gʊd
         * ph_am : ɡʊd
         * ph_other :
         * ph_en_mp3 : http://res.iciba.com/resource/amp3/oxford/0/28/a2/28a24294fed307cf7e65361b8da4f6e5.mp3
         * ph_am_mp3 : http://res.iciba.com/resource/amp3/1/0/75/5f/755f85c2723bb39381c7379a604160d8.mp3
         * ph_tts_mp3 : http://res-tts.iciba.com/7/5/5/755f85c2723bb39381c7379a604160d8.mp3
         * parts : [{"part":"adj.","means":["好的","优秀的","有益的","漂亮的,健全的"]},{"part":"n.","means":["好处,利益","善良","善行","好人"]},{"part":"adv.","means":["同well"]}]
         */

        private String ph_en;
        private String ph_am;
        private String ph_other;
        private String ph_en_mp3;
        private String ph_am_mp3;
        private String ph_tts_mp3;
        private List<PartsBean> parts;

        public String getPh_en() {
            return ph_en;
        }

        public void setPh_en(String ph_en) {
            this.ph_en = ph_en;
        }

        public String getPh_am() {
            return ph_am;
        }

        public void setPh_am(String ph_am) {
            this.ph_am = ph_am;
        }

        public String getPh_other() {
            return ph_other;
        }

        public void setPh_other(String ph_other) {
            this.ph_other = ph_other;
        }

        public String getPh_en_mp3() {
            return ph_en_mp3;
        }

        public void setPh_en_mp3(String ph_en_mp3) {
            this.ph_en_mp3 = ph_en_mp3;
        }

        public String getPh_am_mp3() {
            return ph_am_mp3;
        }

        public void setPh_am_mp3(String ph_am_mp3) {
            this.ph_am_mp3 = ph_am_mp3;
        }

        public String getPh_tts_mp3() {
            return ph_tts_mp3;
        }

        public void setPh_tts_mp3(String ph_tts_mp3) {
            this.ph_tts_mp3 = ph_tts_mp3;
        }

        public List<PartsBean> getParts() {
            return parts;
        }

        public void setParts(List<PartsBean> parts) {
            this.parts = parts;
        }

        public static class PartsBean {
            /**
             * part : adj.
             * means : ["好的","优秀的","有益的","漂亮的,健全的"]
             */

            private String part;
            private List<String> means;

            public String getPart() {
                return part;
            }

            public void setPart(String part) {
                this.part = part;
            }

            public List<String> getMeans() {
                return means;
            }

            public void setMeans(List<String> means) {
                this.means = means;
            }
        }
    }
}

2.3-网络请求

private void httpPOST() {
    API api = RetrofitManager.getRetrofit().create(API.class);
    Map<String, String> params = new HashMap<>();//post请求时需要的参数
    params.put("key", "value");
    params.put("key", "value");
    retrofit2.Call<textBean> resultcall = api.postResult(params);
    resultcall.enqueue(new retrofit2.Callback<textBean>() {
        @Override
        public void onResponse(retrofit2.Call<textBean> call, retrofit2.Response<textBean> response) {
            //网络请求成功
            int httpcode = response.code();//获取返回的code,值为200时证明请求成功
            textBean bean = response.body();//得到网络请求的结果
            String wordname = bean.getWord_name();//获取bean里面需要的值
        }

        @Override
        public void onFailure(retrofit2.Call<textBean> call, Throwable t) {
            //网络请求失败
        }
    });
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值