1,介绍
-
github地址:https://github.com/square/retrofit
* Square公司为Android开源的类型安全的Http客户端
* 底层基于OkHttp,使用OkHttp进行请求
* 将java API的定义转换为interface形式
* 使用annotation描述http请求
* 支持配置json解析器
2,使用准备
【1】添加依赖和权限
-
添加依赖
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//依赖和retrofit对应的gson解析类库,配置了就拥有了json解析的功能
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
-
支持多种解析
-
添加权限
<uses-permission android:name="android.permission.INTERNET"/>
3,Retrofit实现简单get使用
-
访问接口文档
【1】定义Api封装url路径
public interface Api {
String SERVER_HOST = "http://192.168.101.78:8080/apitest/";
String TEST = SERVER_HOST+"test";
String LOGIN = SERVER_HOST+"login";
String POST_JSON = SERVER_HOST+"postJson";
String UPLOAD = SERVER_HOST+"upload";
String UPLOAD_MULTI = SERVER_HOST+"uploadMulti";
String IMAGE = SERVER_HOST+"image";
}
【2】定义接口,@GET是请求方式,("text")封装着访问路径
-
调用Retrofit构建时,设置baseUrl +("text") 来拼接访问路径(baseUrl设置时。要求url必须以/结尾)
-
Call<Stu> ,Stu 是bean对象 。暴露出去的封装对象。
public class Stu {
public String nickname;
public String name;
public String age;
public String gender;
}
/**
*
* 定义当前项目的所有的业务请求方法,比如登录请求,获取商品列表的请求等
*/
public interface xiaoshuaiApi {
@GET("test")
Call<Stu> getProductList();
}
【3】MainActivity 中获取retrofit实例
-
动态代理
//1.创建Retrofit实例对象
retrofit = new Retrofit.Builder()
//设置服务器主机地址,要求url必须以/结尾
.baseUrl("http://192.168.101.78:8080/apitest/")
//使用Gson作为json数据的转换器
.addConverterFactory(GsonConverterFactory.create())
.build();
//2.创建接口的实现类对象:让retrofit创建一个实例对象
//Retrofit内部是通过动态代理来创建实例对象,并且监听对象方法的调用;
//当我们调用业务方法时,Retrofit内部就获取方法