Retrofit的使用

Retrofit出自于Square公司,retrofit就是对okhttp做了封装。把网络请求都交给给了Okhttp,只需要通过简单的配置就能使用retrofit来进行网络请求了。Retrofit的网络请求分为:GET、POST、带头的请求。Retrofit的网络请求得到数据是在主线程中完成的。
这里介绍一下Retrofit的简单使用:
1、首先要导入依赖:

    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
    //下一行的目的可以使用这个工具类进行Gson解析
    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'

2、先介绍GET请求:
先定义一个接口:Call的泛型是自己定义的实体类
假设接口地址是(我用的百度表示):

https://www.baidu.com/?tn=62095104_oem_dg
//接口里面只需要写这些东西
public interface InterfaceRetrofit {
    //这里要value的值是“/”后面的一部分
    @GET(value = "?tn=62095104_oem_dg")
    Call<Bean> getData();
}

MainActivity中:

//ViewPager的网络请求
        Retrofit retrofitViewPager=new Retrofit.Builder()
                //基础地址:
                .baseUrl("https://www.baidu.com/")
                //转换工厂,有这个方法就把Json数据转换成你定义好的实体类
                //相当于Gson解析
                .addConverterFactory(GsonConverterFactory.create())
                .build();

    InterfaceRetrofit interfaceRetrofit = retrofitViewPager.create(InterfaceRetrofit.class);
     retrofit2.Call<Bean> call1 = handPickAdsRetrofit.getData();

call1.enqueue(new retrofit2.Callback<Bean>() {
            @Override
            public void onResponse(retrofit2.Call<Bean> call, retrofit2.Response<Bean> response) {
            //这里response就是获取到的数据
        //response.body(),这个方法获取到Bean类
            @Override
            public void onFailure(retrofit2.Call<Bean> call, Throwable t) {
             Toast.makeText(MainActivity,this, "网络获取失   败",Toast.LENGTH_SHORT).show();
            }
        });

3、POST请求:
首先也是要先定义一个接口
还是拿百度网址举例子

https://www.baidu.com/?tn=62095104_oem_dg
假设后面还有需要添加的字段,page=1,number=2
public interface InterfaceRetrofit {

    @POST(value = "?tn=62095104_oem_dg?")
    //这里添加请求字段
    Call<Bean> getData(@Query("page") String page
            ,@Query("number") String number
    );
}

MainActivity中:使用方法基本相同,关键在于接口的写法

 Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("https://www.baidu.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        InterfaceRetrofit interfaceRetrofit = retrofit.create(InterfaceRetrofit.class);
        Call<Bean> call = interfaceRetrofit .getData(1,2);

call.enqueue(new retrofit2.Callback<Bean>() {
            @Override
            public void onResponse(retrofit2.Call<Bean> call, retrofit2.Response<Bean> response) {
            //这里response就是获取到的数据
        //response.body(),这个方法获取到Bean类
            @Override
            public void onFailure(retrofit2.Call<Bean> call, Throwable t) {
             Toast.makeText(MainActivity,this, "网络获取失   败",Toast.LENGTH_SHORT).show();
            }
        });

欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值