正文
零
//周五啊哈哈哈
零点一
Retrofit是Android中很流行的Http框架,我们只需要设定请求什么资源,Retrofit就可以帮我们设置Http请求、解析JSon等等功能。
一、我们要获取什么
我们准备获取解析json格式的数据,URL是:
https://api.github.com/users/Guolei1130
比如我们需要知道这段JSon的login。
二、使用前的准备
思路很清晰:1、连接服务器拿到数据2、解析数据。
使用之前我们首先要导入Retrofit在
build.gradle
中添加依赖。
在这里----->
添加这个---->
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
这时Android studio会提示你同步一下项目,
同步完成后注意要在AndroidManifest.xml文件中申请网络权限
,申请网络权限添加这个:
<uses-permission android:name="android.permission.INTERNET" />
这样就可以使用了。
三、GOGOGO RUSH B
解析类
首先我们要准备一个解析类,来指定我们要获取的对象model:
code出现,dadada
public class DataModel{
private String login;//注意这里的变量名要和解析的JSon中的key相同
public String getLogin() {
return login;
}
}
解析用的接口
然后我们需要定义一个接口
public interface RequestServices {
@GET("Guolei1130")//要请求的文件
Call<DataModel> getList();//这个方法返回请求到的数据,格式就是我们的解析类
}
其中
@GET
称为
注解
,作用是标注我们使用的是get方法请求数据,注解的类型有很多,我们现在只使用最基础的get。
不过有的时候我们请求的URL是带有参数的,例如:http://www.abc.com/a/b?pram=c,这里URL中, ? 后的就是参数,这种情况的话我们这样处理
@GET("b")
Call<DataModel> getData(
@Query("pram") String c);
@query注解就是标注参数,在调用这个方法的时候传参就可以了。
MainActivity中使用
话不多说,直接代码见分晓
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/users/")//注意URL最后的“/”很重要不要丢
.addConverterFactory(GsonConverterFactory.create())//设置数据解析器,用GSON解析
.build();
//接下来创建请求实例
RequestServices requestServices = retrofit.create(RequestServices.class);
//封装请求实例
Call<DataModel> call = requestServices.getList();
//发送请求(并设置请求回调)
call.enqueue(new Callback<DataModel>() {
@Override
public void onResponse(Call<DataModel> call, Response<DataModel> response) {
//请求成功
if(response.isSuccess()){
try {
//获取数据
DataModel user = response.body();//这样数据就按照DataModel解析出来并储存在user中了
Log.v("response-------->",user.getLogin());
} catch (Exception e){
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<DataModel> call, Throwable t) {
//请求失败
}
});
这样就可以请求到数据并解析出来了。