android Retrofit简单使用及源码分析

简介

Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的。
在gradle中添加

compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
实现简单的POST请求
  1. 首先创建业务接口,代码如下
public interface LoginService {
   
    @POST("user/auth")
    Call<User> login(@Query("username") String username, @Query("password") String password);
}

这里对几种类型的注解做下说明:
@GET 和@POST分别对应get和post请求
@Query代表请求参数,另外还有@Body,@Field,@Part,@Path,@Header等注解

2.完成LoginService的配置

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
   LoginService loginService = retrofit.create(LoginService.class);

3.调用接口方法,完成请求

Call<User> call = loginService.login("nanguangtailang","123");
        call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                Log.d("d",response.body().toString());
            }
           @Override
            public void onFailure(Call<User> call, Throwable t) {
                Log.d("f",t.getMessage());
            }
        });

到这里我们的第一次简单使用Retrofit之旅已经结束了,接下来我们看看Retrofit关键实现的源码(主要关注第二步中出现的类和方法)
在创建Retrofit实例使用了builder模式,Builder是Retrofit中的一个嵌套类,代码如下

public static final class Builder {
   
    private final Platform platform;
    private @Nullable okhttp3.Call.Factory callFactory;
    private HttpUrl baseUrl;
    private final List<Converter.Factory> converterFactories = new ArrayList<>();
    private final List<CallAdapter.Factory> adapterFactories = new ArrayList<>();
    private @Nullable Executor callbackExecutor;
    private boolean validateEagerly;

    Builder(Platform platform) {
      this.platform = platform;
      // Add the built-in converter factory first. This prevents overriding its behavior but also
      // ensures correct behavior when using converters that consume all types.
      converterFactories.add(new BuiltInConverters());
    }

    public Builder() {
      this(Platform.get());
    }

可以看到这个类中的几个重要属性 Platform、okhttp3.Call.Factory、List< Converter.Factory >、List< CallAdapter.Factory > 、Executor
platform 代表我们目前使用的平台,Android、iOS等 ,okhttp3.Call.Factory 是我们传入的 okhttpClient,作用是代理Retrofit发出http请求

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值