Android_Retrofit2.0

一:Retrofit,它是一个可以用于Android和java的网络库,使用它可以简化我们网络操作的工作,提高效率和正确率

  模式:动态代理

  优点 :请求到数据在主线程    可以省去切换到主线程


二:依赖

compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
 

三:使用

1:将Rest API转换为java接口

public interface RetrofitService {
    @GET("product/getCatagory")
    Call<Bean<List<DataBean>>> getservice();

    @GET("user/getUserInfo")
    Call<Bean<DataBean2>> get(@Query("uid") String uid);

    /**
     * method 表示请求的方法,区分大小写
     * path表示路径
     * hasBody表示是否有请求体
     */
    @HTTP(method = "GET", path = "user/getUserInfo", hasBody = false)
    Call<Bean<DataBean2>> getBlog(@Query("uid") String uid);
}

2:封装的工具类

public class RetrofitUtils {
    private static volatile RetrofitUtils instance;
    private final Retrofit retrofit;

    private RetrofitUtils(String baseurl) {
        retrofit = new Retrofit.Builder()
                .baseUrl(baseurl)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public static RetrofitUtils getInstance(String baseurl) {
        if (instance == null) {
            synchronized (RetrofitUtils.class) {
                if (instance == null) {
                    instance = new RetrofitUtils(baseurl);
                }
            }
        }
        return instance;
    }

    public Retrofit getretrofit(){
        return retrofit;
    }

}

3:使用

public class MainActivity extends AppCompatActivity {


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

        Retrofit retrofit = RetrofitUtils.getInstance("https://www.zhaoapi.cn/").getretrofit();
        RetrofitService retrofitService = retrofit.create(RetrofitService.class);
        Call<Bean<List<DataBean>>> call = retrofitService.getservice();
        call.enqueue(new Callback<Bean<List<DataBean>>>() {
            @Override
            public void onResponse(Call<Bean<List<DataBean>>> call, Response<Bean<List<DataBean>>> response) {
                //直接获取到解析后的数据
                Bean<List<DataBean>> body = response.body();
                List<DataBean> data = body.getData();
                for (int i=0;i<data.size();i++){
                    Log.i("Tag",data.get(i).getName());
                }
            }

            @Override
            public void onFailure(Call<Bean<List<DataBean>>> call, Throwable t) {

            }
        });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值