Retrofit2 介绍和使用

http://square.github.io/retrofit/ 官方源码

Retrofit 是由Square公司开源的 HTTP网络请求框架的封装,类似Google开源的Volley ,Retrofit底层的网络请求库是基于OKHTTP的 前者主要是对接口的封装,后者处理网络请求。

层级结构图

应用程序通过Retrofit 请求网络,实际是Retrofit接口层封装请求参数 ,Header. Url 等信息 ,由OkHttp 完成后续请求操作 服务器返回数据后OkHttp将结果交给Retrofit,再根据需求对数据解析处理。

一 使用 

1 创建一个HTTP API的 Java Interface

public interfaceGitHubService {

@GET("users/{user}/repos")

Call<List<Repo>>listRepos(@Path("user") String user);

}

2 创建Retrofit的实例  Retrofit实例创建一个实现了HTTP API 接口的实例对象

Retrofit retrofit =newRetrofit.Builder()

.baseUrl("https://api.github.com/")

.build();

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

3 用过实现了HTTP API接口的实例 发起同步或者异步的请求

请求  https://api.github.com/users/{user}/repos  中listRepos 方法

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

//同步调用

try{

repos.execute();

}catch(IOException e) {

e.printStackTrace();

}

//异步调用

repos.enqueue(newCallback>() {

@Override

public voidonResponse(Call> call,Response> response) {

}

@Override

public voidonFailure(Call> call,Throwable t) {

}

});


二 URL 配置

Retrofit 支持协议GET/POST/PUT/DELETE/HEAD/PATCH 这些协议以注解的形式配置

@GET("users/{user}/repos")Call>listRepos(@Path("user") String user)

构造Retrofit时传入的baseUrl和注解的Value 拼成了整个请求路径baseUrl/Value

2.1常用参数注解

Url中?后面的key-value 键值对

@Query&@QueryMap 

表单请求

@Field& @FieldMap

@Part& @PartMap @Multipart @Streaming

Http请求头参数的设置

@Head & @HeadMap @Heads

三 高级用法 见DEMO

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,384评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,322评论 25 709
  • 安卓开发领域中,很多重要的问题都有很好的开源解决方案,例如Square公司提供网络请求 OkHttp , Retr...
    aaron688阅读 5,901评论 1 20
  • 简介 刚接触Retrofit的时候,就写了一篇简单的使用介绍:Retrofit 2.0基本使用方法,算是对Retr...
    Whyn阅读 7,954评论 4 24
  • 这一章的首个标题,就是最吸引我们去读的,最容易激发我们前去阅读的冲动的标题。它的任务完成了,作者的目的也达到了。 ...
    Cherry言阅读 2,515评论 0 1