首先我们先看gitHup官方上的介绍
A type-safe HTTP client for Android and Java
Android和Java的类型安全的HTTP客户端请求库
那么到底什么是Retrofit 框架呢
Retrofit 是Squarre公司出品的目前非常流行的网络框架,效率高,实现简单.运用注解原理和动态代理,极大的简化了网络请求得繁琐步骤,非常适合处理REST ful网络请求.目前版本是2
Retrofit 默认使用OKHttp处理请求
默认使用Gson解析
Retrofit2 实现步骤
1.定义一个接口(封装URL地址和数据请求)
2.实例化Retrofit
3.通过Retrofit 实例创建接口服务对象
4.接口对象调用接口中的方法,获得Call对象
5.Call 对象执行请求(异步,同步)
Retrofit2 常用的注解接口
@GIT GET网络请求
@POST POST 网络请求
@Headers 头部参数信息
@Path 路径参数,替换url的之中”{” 和”}” 包括的部分
@Query 查询参数 和GET请求连用 在URL 地址中追加类似于”pager=1”的参数
@QueryMap 查询参数集合 ,在url追加中类似”type=text&pager=1”
@FormUrlEcoded 对表单域中内容进行编码处理,避免乱码
@Field 指定from表单域中每个控件 的name 及相应数值
@FieldMap 表单域集合
@Multipart Post提交分块请求,如果是上传文件,必须指定Multipart
@Part POST提交分块请求
@Body POST提交分块请求
在下面的例子当中采用与GitHub一些相关api进行演示。在这里首先需要添加访问网络的权限。
1.添加Gradle依赖项
在这里我们最好查看一下retrofit的官网添加最新依赖。
这两依赖建议导入下面的那个
compile ‘com.squareup.retrofit2:retrofit:2.0.1’
compile ‘com.squareup.retrofit2:converter-gson:2.0.1’
2.创建API接口
在retrofit中通过一个Java接口作为http请求的api接口。
public interface GitHubApi {
@GET("repos/{owner}/{repo}/contributors")
//定义了一个方法
//返回值类型是Call
Call<ResponseBody> contributorsBySimpleGetCall(@Path("owner") String owner, @Path("repo") String repo);
}
3.创建retrofit实例
在这里baseUrl是在创建retrofit实力的时候定义的,我们也可以在API接口中定义完整的url。在这里建议在创建baseUrl中以”/”结尾,在API中不以”/”开头和结尾。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(“https://api.github.com/“)
.build();
4.调用API接口
在调用API接口请求后,获得一个json字符串,通过Gson进行解析,获得login以及contributions。
GitHubApi repo = retrofit.create(GitHubApi.class);
Call<ResponseBody> call = repo.contributorsBySimpleGetCall(mUserName, mRepo);
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
try {
Gson gson = new Gson();
ArrayList contributorsList = gson.fromJson(response.body().string(), new TypeToken