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学习入门

Retrofit的使用 设置权限与添加依赖 定义请求接口 通过创建一个retrofit生成一个接口的实现类(动态代理) 调用接口请求数据 设置权限与添加依赖权限:首先确保在AndroidManif...
  • whuhan2013
  • whuhan2013
  • 2016年06月10日 20:25
  • 1958

我的UML建模学习(一)

公司比较清闲,平时大部分时间都在学习,哦,不是大部分,是整天都在自己学习,最近一直对建模语言感兴趣,所以就自己各方找资料。开始是看视频,看了一个小时,感觉效果不大,然后开始反思效果不大的原因。这是我自...
  • qq_29206465
  • qq_29206465
  • 2016年04月27日 11:42
  • 1378

小白学习 Retrofit2 由浅入深

原文链接: http://www.jianshu.com/p/a8b88c7fe831 为什么说一篇就够了呢,因为不光是我自己学习Retrofit2的总结,还有好多优秀文章...
  • qq_24889075
  • qq_24889075
  • 2016年08月11日 11:39
  • 3111

5-6 一帮一 (15分)

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,...
  • yamminy
  • yamminy
  • 2017年03月23日 21:17
  • 502

html5学习心得1

html5比之html4,body中有许多新增标签,即:​ header,article,section,time,address,figure,figcaption,details,summary...
  • 929029
  • 929029
  • 2015年03月11日 08:58
  • 322

Hibernate学习大全

第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHelloWorld 7...
  • xiangzhihong8
  • xiangzhihong8
  • 2016年05月30日 11:46
  • 2599

pta  一帮一

12 一帮一   (15分) “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全...
  • Horizonhui
  • Horizonhui
  • 2017年03月11日 19:44
  • 938

L1-030. 一帮一

L1-030. 一帮一 “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生...
  • ccDLlyy
  • ccDLlyy
  • 2016年07月29日 17:47
  • 2215

学习VB.NET编程最基本的三个问题

1、什么是对象和属性,他们之间的联系是? 对象:将对象看做一个实物或者事物的一种概念。比如说窗体和控件都是对象。 属性:属性阐明了与对象相关的或是控制对象行为的信息,例如,对象的名字、颜色、尺寸或...
  • ghxbob
  • ghxbob
  • 2013年09月20日 09:59
  • 1459

5-3 一帮一 (15分)

5-3 一帮一   (15分) “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在...
  • z6_6z
  • z6_6z
  • 2017年08月07日 16:48
  • 338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:retrofit学习(一)-----主要类的学习
举报原因:
原因补充:

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