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

原创 2016年08月30日 18:02:59

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。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

retrofit 学习

  • 2017-03-10 08:48
  • 32.46MB
  • 下载

(转载)cocos2d-X学习之主要类介绍:节点CCNode

转载之:http://www.cnblogs.com/lhming/archive/2012/07/01/2572227.html        首先是类结构:    可以看到C...

retrofit学习

  • 2016-10-23 22:11
  • 1.55MB
  • 下载

cocos2d-X学习之主要类介绍:节点CCNode

首先是类结构: 可以看到CCNode 几乎是游戏中处理的大部分类的父类,其主要有以下函数: virtual int  getZOrder (void) //获取节点的顺序 virtua...

MVP+Retrofit+RxJava学习

  • 2017-05-02 10:26
  • 26.13MB
  • 下载

OpenGL学习主要代码类

cocos2d-X学习之主要类介绍:节点CCNode

首先是类结构: 可以看到CCNode 几乎是游戏中处理的大部分类的父类,其主要有以下函数: virtual int  getZOrder (void) //获取节点的顺序 virtua...

java主要集合类的数据结构学习

在程序中,集合类每天都在使用,以致于某些代码充斥着List和Map,一直没有机会整理下它们背后的实现原理。这几天不太忙,正好可以看会代码,补充下概念。 和集合类的大致分类类似,下面我也分List,M...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)