使用Retrofit的步骤
1、添加retrofit和converter-gson的依赖
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
2、创建一个接口类 存的是业务方法
改业务方法是抽象方法 该方法的返回值是call对象 call对象中的泛型就是服务器响应结果对应的JavaBean
3、如果是get请求 需要在方法上使用@GET注解进行标识 表示这是一个get请求 括号中传递的是接口地址
//声明的全部是抽象方法
//怎么来声明网络请求 业务方法
//存放的是URL地址 该URL地址不包含服务器地址 仅包含业务方法的地址(接口地址)
//接口地址不能以/开头
@GET("data/Android/10/1")
Call<AndroidNews> loadNewsList();
}
4、创建Retrofit对象 也是通过构建者模式进行创建 创建的时候需要配置服务器地址和解析器
创建Retrofit对象 配置服务器地址 必须以/结尾
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://gank.io/api/")//配置服务器地址
.addConverterFactory(GsonConverterFactory.create())//添加解析器 告诉Retrofit使用Gson来进行数据解析
.build();
retrofit.create(要创建的类.class); 返回值类型就是 要创建类的对象
发送网络请求可以发送同步或者异步请求 服务器响应的结果也是存放在response对象中
response.body() 获取就是解析数据后的JavaBean对象
//通过Java的动态代理来进行对象的创建
PandaService pandaService = retrofit.create(PandaService.class);
Call<AndroidNews> call = pandaService.loadNewsList();
try {
Response<AndroidNews> response = call.execute();
List<AndroidNews.ResultsBean> results = response.body().getResults();
for (AndroidNews.ResultsBean bean : results){
Log.d("RetrofitActivity", bean.getDesc());
}
} catch (IOException e) {
e.printStackTrace();
}