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