一、简介
Retrofit:是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求,其源码详见OkHttp Github。
二、简单使用
1.首先需要导入第三方jar包:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
2.创建模型类 JavaBean
3.创建接口
①第一种Get接口
public interface UrlService {
/**
* 这是一个电影接口 摘自网络
* http://api.m.mtime.cn/PageSubArea/TrailerList.api
*/
@GET("PageSubArea/{TrailerList}")
Call<JavaBean> callGetTrailerListApi(@Path("TrailerList")String TrailerList);
}
或者写成
@GET("PageSubArea/TrailerList.api")
Call<com.jing.flowlayout.model.JavaBean.TrailersBean> getApi();
②第二种Get接口(有参数的接口)
/**
* http://mobile.ximalaya.com/mobile/discovery/v1/categories
* ?channel=and-d3&device=android&picVersion=13&scale=2
*/
@GET("mobile/discovery/v1/categories")
Call<JavaBean> getApi(@Query("channel")String channel,
@Query("device")String device,
@Query("picVersion")String picVersion,
@Query("scale")String scale);
③Post接口
4.最后,进行网络请求数据
/**
* 进行网络请求数据
*/
private void setUpView() {
Retrofit retrofit =new Retrofit.Builder()
.baseUrl("http://api.m.mtime.cn/")
.addConverterFactory(GsonConverterFactory.create())
.build();
UrlService api =retrofit.create(UrlService.class);
Call<JavaBean> call = api.callGetTrailerListApi("TrailerList"+"."+"api");
call.enqueue(new Callback<JavaBean>() {
@Override
public void onResponse(Call<JavaBean> call, Response<JavaBean> response) {
Log.e(TAG, "onResponse: 请求成功");
Log.e(TAG, "Url: "+response.raw().request().url());
if (response !=null){
JavaBean body = response.body();
if (body !=null){
List<JavaBean.TrailersBean> trailers = body.getTrailers();
adapter.addDatas(trailers);
}
}
}
@Override
public void onFailure(Call<JavaBean> call, Throwable t) {
Log.e(TAG, "onFailure:请求失败"+t.getMessage() );
}
});
}