Retrofit的使用

来源:互联网 发布:sql查询学生总分 编辑:程序博客网 时间:2024/06/07 15:05

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();            }        });

欢迎批评指正

0 0