retrofit学习(一)-----主要类的学习

retrofit的基本用法:

1.interface

public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

2.创建interface实例

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();

GitHubService service = retrofit.create(GitHubService.class);

3.接口方法调用,返回http call。

Call<List<Repo>> repos = service.listRepos("octocat");

Each Call from the created GitHubService can make a synchronous or asynchronous HTTP request to the remote webserver.
每一个接口方法返回的call都可以向web服务器发起同步或异步http请求。

在retrofit的create函数中,核心代码是:

ServiceMethod serviceMethod = loadServiceMethod(method);
            OkHttpCall okHttpCall = new OkHttpCall<>(serviceMethod, args);
            return serviceMethod.callAdapter.adapt(okHttpCall);

ServiceMethod

类图:
这里写图片描述
这个类的介绍: Adapts an invocation of an interface method into an HTTP call. 把接口方法的调用适配成HTTP call需要的形式。
ServiceMethod的内部类Builder用来构造ServiceMethod,它的build方法中核心代码:

callAdapter = createCallAdapter();
      responseType = callAdapter.responseType();

      responseConverter = createResponseConverter();

      for (Annotation annotation : methodAnnotations) {
        parseMethodAnnotation(annotation);//简析annotation   赋值httpmethod等属性
      }

创建了一个CallAdapter和一个Converter.

CallAdapter

以ExecutorCallAdapterFactory为例:
这里写图片描述
ExecutorCallAdapterFactory的get方法用来生产CallAdapter。
CallAdapter的描述:Adapts a {@link Call} into the type of {@code T}. 把Call适配成T。

 <R> T adapt(Call<R> call);

Converter

以BuiltInConverters为例:
这里写图片描述
转换器,转换成相应的RequestBody或者相应的ResponseBody。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值