Retrofit

作者: 莫夜路人 | 来源:发表于2017-05-04 16:06 被阅读0次

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到实体类 的转变,所得即所用,而且定义接口也是一目了然,更方便对接口的管理。

相关文章

网友评论

    本文标题:Retrofit

    本文链接:https://www.haomeiwen.com/subject/zntdtxtx.html