Retrofit概念
Retrofit是一个网络加载库,底层是基于okhttp来实现的
Retrofit 的原理,有三个十分重要的概念:『注解』,『动态代理』,『反射』。
添加依赖
compile 'com.squareup.retrofit2:retrofit:2.1.0'
在 Retrofit 2.0 中,如果要将 JSON 数据转化为 Java 实体类对象,需要自己显式指定一个 Gson Converter。
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
使用
我们访问的API接口地址:
1.定义接口
public interface APIInterface {
// https://api.github.com/users/Guolei1130
@GET("/users/{user}")
Call<UserBean> getUser(@Path("user")String user);
}
@GET注解标识了请求类型
"/users/{user}" 是我们访问的接口地址的一部分,与baseurl一起组成完整的接口地址,即:baseurl+"/users/{user}"
其中 {user} 的作用类似于占位符,具体类型由getUser(@Path("user")String user)指定,此处表示user类型为String。
Call<UserBean> 是一个请求对象,<UserBean>表示返回结果是一个 UserBean类型的实例。
2.生成实体类
这里推荐使用Android Studio的插件GSONFormat
GsonFormat安装方法:
方法一:
1.Android studio File->Settings..->Plugins–>Browse repositores..搜索GsonFormat
2.安装插件,重启android studio
方法二:
1.下载GsonFormat.jar ;
2.Android studio File->Settings..->Plugins –>install plugin from disk..导入下载GsonFormat.jar
3.重启android studio
使用方法:
在实体类中
然后选择
然后将json串粘贴到如图所示的输入框中
点击OK就会自动生成实体类。
3.请求网络
有了 要连接的Http接口 和 要返回的数据结构,我们就可以进行网络请求了。
1.首先构造Retrofit对象
我们前面说的baseUrl就是在这一步设置的
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
2.创建API接口对象
APIInterface api = retrofit.create(APIInterface.class);
3.创建请求对象
Call<UserBean> guolei1130 = api.getUser("Guolei1130");
这里的.getUser(“Guolei1130”) 取代了前面的 {user}。
4.发送请求
同步请求
guolei1130.execute();
异步请求
guolei1130.enqueue(new Callback<UserBean>() {
@Override
public void onResponse(Call<UserBean> call, Response<UserBean> response) {
//成功返回数据后在这里处理,使用response.body();获取得到的结果
UserBean userBean = response.body();
}
@Override
public void onFailure(Call<UserBean> call, Throwable t) {
}
});