Retrofit2 介绍和使用

2016-09-29  本文已影响0人  菜鸟汤先生

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

上一篇下一篇

猜你喜欢

热点阅读