Retrofit的简单使用-Android

    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.0.2'

首先把我们的接口放出来UomgAPI - 优启梦免费API数据接口调用服务平台https://api.uomg.com/

这里我们使用的是接口里面的QQ等级查询 - 等级成长值查询 - 优启梦免费API数据接口调用服务平台 (uomg.com)https://api.uomg.com/doc-get.qqdj.html

音乐解析 - 全民K歌 - 优启梦免费API数据接口调用服务平台 (uomg.com)https://api.uomg.com/doc-get.kg.html

随机头像输出 - 优启梦免费API数据接口调用服务平台 (uomg.com)https://api.uomg.com/doc-rand.avatar.html

根据接口的数据我们先创建出相对应的类,下面是qq的,因为查看效果我们只获取部分数据

//这是QQ的
public class Data {

    private int code;
    private String qq;
    private String name;
    private String qlogo;

    public int getCode() {
        return code;
    }

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


 public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }

    public String getName() {
        return name;
    }

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

    public String getQlogo() {
        return qlogo;
    }

    public void setQlogo(String qlogo) {
        this.qlogo = qlogo;
    }

    public Lvzuan getLvzuan() {
        return lvzuan;
    }

    public void setLvzuan(Lvzuan lvzuan) {
        this.lvzuan = lvzuan;
    }

    private Lvzuan lvzuan;

    class  Lvzuan{
        private int code;
        private int vip;

        public int getCode() {
            return code;
        }

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

        public int getVip() {
            return vip;
        }

        public void setVip(int vip) {
            this.vip = vip;
        }
    }
}
//这是全民K歌的
public class Data2 {

    private int code;
    private Data data;

    public int getCode() {
        return code;
    }

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

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }

    class Data{
        private String phonemodel;
        private String playurl;
        private String pic;
        private String song_name;
        private String kg_nick;
        private int play_num;

        public String getPhonemodel() {
            return phonemodel;
        }

        public void setPhonemodel(String phonemodel) {
            this.phonemodel = phonemodel;
        }

        public String getPlayurl() {
            return playurl;
        }

        public void setPlayurl(String playurl) {
            this.playurl = playurl;
        }

        public String getPic() {
            return pic;
        }

        public void setPic(String pic) {
            this.pic = pic;
        }

        public String getSong_name() {
            return song_name;
        }

        public void setSong_name(String song_name) {
            this.song_name = song_name;
        }

        public String getKg_nick() {
            return kg_nick;
        }

        public void setKg_nick(String kg_nick) {
            this.kg_nick = kg_nick;
        }

        public int getPlay_num() {
            return play_num;
        }

        public void setPlay_num(int play_num) {
            this.play_num = play_num;
        }
    }

//这是输出男女随机头像的
public class Data3 {

    private int code;
    private String imgurl;

    public int getCode() {
        return code;
    }

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

    public String getImgurl() {
        return imgurl;
    }

    public void setImgurl(String imgurl) {
        this.imgurl = imgurl;
    }
}

然后创建我们的接口Api

public interface Api {

        //get请求
        @GET("api/qq.info")
        Call<Data> getJsonData(@Query("qq") String qq);

        //get请求
        @GET("api/get.kg")
        Call<Data2> getJsonData2(@Query("songurl") String sort);

        //get请求
        @GET("api/rand.avatar")
        Call<Data3> getJsonData3(@Query("sort") String sort,@Query("format") String json);

}

然后再mainactivity.xml设置三个按钮分别监听三个接口的数据

public class MainActivity extends AppCompatActivity {

    public static final String TAG = "MainActivity";

    Button qq,qmkg,tx;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        voidinit();

        //构建Retrofit实例
        Retrofit retrofit = new Retrofit.Builder()
                //设置网络请求BaseUrl地址
                .baseUrl("https://api.uomg.com/")
                //设置数据解析器
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        //创建网络请求接口对象实例
        Api api = retrofit.create(Api.class);

        qq.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*qq的返回数据*/
                Call<Data> dataCall = api.getJsonData("98646451");//这里所指的是我们的qq号
                //异步请求
                dataCall.enqueue(new Callback<Data>() {
                    //请求成功回调
                    @Override
                    public void onResponse(Call<Data> call, Response<Data> response) {
                        Data body = response.body();
                        Log.i(TAG, "name: "+body.getName());
                        Log.i(TAG, "头像: "+body.getQlogo());
                        Log.i(TAG, "登录状态: "+body.getCode());
                    }
                    //请求失败回调
                    @Override
                    public void onFailure(Call<Data> call, Throwable t) {
                        String message = t.getMessage();
                        Log.i(TAG, "onFailure: "+message+t);
                        Log.i(TAG, "onFailure: 失败");
                    }
                });
            }
        });

        qmkg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*全名K歌的数据*/
                Call<Data2> dataCall2 = api.getJsonData2("https://node.kg.qq.com/play?s=YaCv8EYfJunVWYcH");
                //异步请求
                dataCall2.enqueue(new Callback<Data2>() {
                    //请求成功回调
                    @Override
                    public void onResponse(Call<Data2> call, Response<Data2> response) {
                        Data2 body = response.body();
//                Log.i(TAG, "onResponse:*********** "+body);
//                IDNA.Info data = body.getData();
                        Log.i(TAG, "onResponse: "+body.getCode());

                        Log.i(TAG, ":1 "+body.getData().getKg_nick());
                        Log.i(TAG, ":2 "+body.getData().getPhonemodel());
                        Log.i(TAG, ":3 "+body.getData().getPlayurl());
                        Log.i(TAG, ":4 "+body.getData().getPic());
                        Log.i(TAG, ":5"+body.getData().getSong_name());
                        Log.i(TAG, ":6"+body.getData().getPlay_num());

                        Log.i(TAG, "onFailure: 成功");
                    }
                    //请求失败回调
                    @Override
                    public void onFailure(Call<Data2> call, Throwable t) {
                        String message = t.getMessage();
                        Log.i(TAG, "onFailure: "+message+t);
                        Log.i(TAG, "onFailure: 失败");
                    }
                });
            }
        });

        tx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Call<Data3> data3Call = api.getJsonData3("男","json");
                data3Call.enqueue(new Callback<Data3>() {
                    @Override
                    public void onResponse(Call<Data3> call, Response<Data3> response) {
                        Data3 body = response.body();
//                Log.i(TAG, "onResponse:*********** "+body);
//                IDNA.Info data = body.getData();
                        Log.i(TAG, "onResponse: "+body.getCode());
                        Log.i(TAG, "onResponse: "+body.getImgurl());

                    }

                    @Override
                    public void onFailure(Call<Data3> call, Throwable t) {
                        String message = t.getMessage();
                        Log.i(TAG, "onFailure: "+message+t);
                        Log.i(TAG, "onFailure: 失败");
                    }
                });
            }
        });

    }

    private void voidinit() {
        qq=findViewById(R.id.qq);
        qmkg=findViewById(R.id.qmkg);
        tx=findViewById(R.id.tx);
    }

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/qq"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="QQ" />

    <Button
        android:id="@+id/qmkg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="全名K歌" />

    <Button
        android:id="@+id/tx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="随机获取男女头像" />

</LinearLayout>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值