Retrofit 之初体验

依赖
//retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

 

private RetrofitService service;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.e("测试retrofit", "onCreate----");
    setContentView(R.layout.load_more_view);


    Retrofit retrofit = new Retrofit.Builder()  //创建Retrofit实例
            .baseUrl("https://api.apiopen.top/")    //url头部
            .addConverterFactory(GsonConverterFactory.create()) //返回的数据经过转换工厂转换成我们想要的数据,最常用的就是Gson
            .build();   //构建实例
    service = retrofit.create(RetrofitService.class);   //使用retrofit的create()方法实现请求接口类


    request();


}

 

 

  //请求古诗的方法
    private void request() {
        Call<Poetry> call = service.getPoetry("静夜思");   //通过getPoetry()方法获取Call对象
        call.enqueue(new Callback<Poetry>() {   //call入列发送请求,传入回调Callback,重写成功onRespons()与失败onFailure()方法,并编写相应逻辑
            /**
             * 请求成功
             * */
            @Override
            public void onResponse(Call<Poetry> call, Response<Poetry> response) {  //返回的response中包含了所有信息,其中response.body就是响应主体
                Log.e("Retrofit测试", "--------onSuccess-----------" + response.body().getResult().get(0).getTitle());

                Log.e("Retrofit测试", "--------onSuccess-----------" + response.body().getResult().get(0).getAuthors());

                Log.e("Retrofit测试", "--------onSuccess-----------" + response.body().getResult().get(0).getContent().replace("|", "\n"));

                if (response.body().getResult().size() > 0) {   //由于我们已经添加了Gson转换工厂,所以响应主体会被转换成Poetry对象,使用对象响应方法判断返回的古诗是否大于一首
//                    title.setText(response.body().getResult().get(0).getTitle());   //数据展示
//                    author.setText(response.body().getResult().get(0).getAuthors());
//                    String contentText = response.body().getResult().get(0).getContent().replace("|", "\n"); //由于接口返回的古诗体用"|"代替换行,所以我们想要换行输出就要替换回来
//                    content.setText(contentText);
                } else {
                    Toast.makeText(NetActivity.this, "这就触及到我的知识盲区了", Toast.LENGTH_SHORT).show();   //古诗没有大于一首
                }
            }

            /**
             * 请求失败
             * */
            @Override
            public void onFailure(Call<Poetry> call, Throwable t) {
                Log.d("ManiActivity", t.getMessage());  //控制台打印报错原因
                Log.e("Retrofit测试", "--------onFail-----------" + t.getMessage());
            }
        });

    }
package com.union_test.toutiao.RetrofitAbout;

import java.util.List;

/**
 * Created by DaYu on 2019/5/23.
 * Describe:
 */
public class Poetry {




    private int error_code;
    private String reason;
    /**
     * code : 200
     * message : 成功!
     * result : [{"title":"静夜思","content":"床前看月光,疑是地上霜。|举头望山月,低头思故乡。","authors":"李白"}]
     */

    private int code;
    private String message;
    private List<ResultBean> result;

    public int getError_code() {
        return error_code;
    }

    public void setError_code(int error_code) {
        this.error_code = error_code;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    @Override
    public String toString() {
        return "Poetry{" +
                "error_code=" + error_code +
                ", reason='" + reason + '\'' +
                '}';
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }




    public static class ResultBean {
        /**
         * title : 静夜思
         * content : 床前看月光,疑是地上霜。|举头望山月,低头思故乡。
         * authors : 李白
         */

        private String title;
        private String content;
        private String authors;

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }

        public String getAuthors() {
            return authors;
        }

        public void setAuthors(String authors) {
            this.authors = authors;
        }
    }
}

 

 

/**
 * Created by DaYu on 2019/5/23.
 * Describe:
 */
public interface RetrofitService {

    //get请求接口
    @GET("searchPoetry")    //指定请求类型的注解
    Call<Poetry> getPoetry(@Query("name") String name);   //获取古诗的方法

 

 最后不要忘了网络权限申请

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值