移动开发三剑客 -Retrofit

Retrofit介绍

移动开发三剑客:Retrofit 2.0,RxJava(Android), OkHttp3.3

官方标语:A type-safe HTTP client for Android and Java

语意很明显一款android安全类型的http客户端

Retrofit是SQUARE美国一家移动支付公司最近新发布的在Android平台上http访问的开源项目,Retrofit与okhttp共同出自于Square公司,retrofit对okhttp做了一层封装,把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了
Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装。
我对RESTful架构的理解是:
相当于设计一个函数,函数内部过程对客户端不可见,客户端只传递参数接受结果

Retrofit特点 :

  1. 底层使用OkHttp进行网络传输,性能好,速度快
  2. 可以自动将REST API返回的数据转化为Java对象,且支持多种数据转换格式(如json、xml等)
  3. 使用Java注解声明HTTP请求
  4. 支持 Multipart请求和文件上传

如何快速的上手Retrofit

1 首先在你的Grandle中引入Retrofit2.0

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

2 创建一个retrofit

  Retrofit wzqRertofit = new Retrofit.Builder()
        .baseUrl("http://192.168.10.155:80/")
        .addConverterFactory(GsonConverterFactory.create())
        .client(new OkHttpClient()).build();

3 创建接口请求库控制中心

   public interface WebAPIService {
    @FormUrlEncoded
    @POST("WebService/")
    Call<Webdata> getData(@Field("service") String first);
   }

POST请求不要忘记加@FormUrlEncoded

4 调用API

Retrofit支持异步和同步,
call.enqueue()来采用异步请求
call.execute() 则采用同步方
WebAPIService apiService = wzqRertofit.create(WebAPIService.class);
Call<Webdata> call = apiService.getData("chick_app");

执行方法

    Call<Webdata> callsub = call.clone();
    callsub.enqueue(new Callback<Webdata>() {
        @Override
        public void onResponse(Call<Webdata> call, Response<Webdata> response) {

            if (response.isSuccessful()) {
                tvContent.setText(response.body().toString());
            }
        }

        @Override
        public void onFailure(Call<Webdata> call, Throwable t) {
        }
    });

为什么要加 call.clone()?

由于call只能被执行一次,所以按照上面的顺序执行会得到如下错误。
java.lang.IllegalStateException: Already executed
我们可以通过clone,来克隆一份call,从新调用

jackLee(简书作者)的一句话特别喜欢:

我们需要牢牢的记住:所有的第三方库能实现的功能,我们使用原生的API只要花时间和精力也能实现,但是可能会出现很多的bug而且会花费较多的时间和精力,而且性能也不一定很好,第三方的库会帮我们封装底层的一些代码,避免我们做重复多余易出错的事情,让我们专注于业务逻辑,所以学习任何一个第三方库都将是简单的,我们不应心生畏惧。

原文链接:http://www.jianshu.com/p/1ef0ba0bccc6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值