添加依赖库
compile 'com.squareup.retrofit2:retrofit:2.2.0'
//gson和jackson任选一个即可
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'com.squareup.retrofit2:converter-jackson:2.2.0'
创建APIService接口(当然名字可以随便你起)
public interface APIService {
//get请求, " "里面为域名后面的地址,前面最好不要用"/"
@GET("app/customer/class/v2/top/list")
//请求得到的数据为HttpResult<List<HomeTag>>, 当然可以为对象,也可以为集合数据
//测试后发现好像不能用泛型
//方法名随便你自己起
Call<HttpResult<List<HomeTag>>> getResult();
}
另外的用法
//使用占位符,@Path("user")指向注解里面的{user}
@GET("users/{user}/tags")
Call<List<HomeTag>> getResult(@Path("user") String user);
//请求参数为字符串
Call<HttpResult<List<HomeTag>>> getResult(@Field("content") String content);
//请求参数为map
Call<HttpResult<List<HomeTag>>> getResult(@FieldMap Map<String, String> map);
- 代码中使用
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(HttpConfig.HOST)//接口的域名,最好后面接"/"
.addConverterFactory(GsonConverterFactory.create())//也可以用其他的json工具
.build();
APIService service = retrofit.create(APIService.class);
Call<HttpResult<List<HomeTag>>> result = service.getResult();
//开启异步请求
result.enqueue(new Callback<HttpResult<List<HomeTag>>>() {
@Override
public void onResponse(Call<HttpResult<List<HomeTag>>> call, Response<HttpResult<List<HomeTag>>> response) {
//TODO
//call,为前面的请求对象
//response,请求后需要的数据就包装在里面
HttpResult<List<HomeTag>> body = response.body();
List<HomeTag> list = body.getPayload();
}
@Override
public void onFailure(Call<HttpResult<List<Object>>> call, Throwable t) {
}
});
是不是so easy!!!