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