Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求。Retrofit想必也是一种趋势,也借此机会认识一下吧。
1、导包
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖
2、创建Call对象
studio 提供了一个很方便的插件 Json2Pojo
Json2Pojo
创建方式如同新建文件一样,右键-->New-->Generate POJOS from JSON
新建POJO
3、定义接口,用来返回我们需要的Call对象
public interface RequestService {
@GET("{name}")
Call<String> getUser(@Path("name") String name);
@POST("mobileLogin/submit")
Call<APojo> setUser(@Query("name") String name,@Query("pwd") String pwd);
}
Retrofit提供的请求方式注解有 @GET 和 @POST,参数注解有 @PATH 和 @Query等。
@PATH指的是通过参数填充完整的路径。
@Query就是我们的请求的键值对的设置,我们构建Call对象的时候会传入此参数。
4、创建一个Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://xxxx")
//增加返回值为String的支持
.addConverterFactory(ScalarsConverterFactory.create())
//增加返回值为Gson的支持,以实体类返回
.addConverterFactory(GsonConverterFactory.create())
//增加返回值为Oservable<T>的支持
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
然后再关联 RequestService 对象,得到我们的Call对象。
RequestService requestService = retrofit.create(RequestService.class);
Call<String> call = requestService.getUser("张三");
利用得到的Call对象,我们就可以发出网络请求了。
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Log.e("===","return:"response.body().toString());
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("===","失败");
}
});
以上就是简单使用 Retrofit 的步骤,使用过程中感觉最方便的一点就是 json到实体类 的转变,所得即所用,而且定义接口也是一目了然,更方便对接口的管理。
网友评论