Retrofit 学习使用

最近retrofit 和 RxJava非常的火热,公司里面新的项目也采用的mvp+retrofit+RxAndroid的模式进行开发。作为刚上手这种结构的项目,首先我从retrofit+RxAndroid 结合的最基本的使用方法开始学习。

关于Retrofit

Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现.

Retrofit的基本使用

一:导入相关依赖

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

注意的地方,导入包的版本要一致,否则会报错。

二:基本使用:

2.1:创建业务请求接口
public interface UrlServer {
    @GET("top250")
    Call getDatabean (
    @Query("start") int start,
    @Query("count") int count);
}

Retrofit中的请求是已代理的方式实现的。请求方式等表示是直接用注解的方式;
其中@Get表示的是Get请求,@post表示post请求。括号中表示的是相对路径,和baseUrl组合形成最终的请求地址;
接口中定义请求的方法,方法必须有返回值,且必须有泛型,泛型的类型是json字符串解析后的对象;
@Query表示请求参数,将会以key=value的方式拼接在url后面。

但是项目中一般post请求比较多,并且传入参数也相对复杂,使用这种方式就显得十分不方便。这时候就可以用表单的方式进行参数的传递。

    @FormUrlEncode
    @POST("App/tot")
    Call tot(
            @FieldMap Map map);

使用@FormUrlEncode注解表示使用表单的形式进行提交。
@FieldMap把参数用一个map,以key,value的形式传入,这样不管有多少参数都可以方便的进行管理。随时在传入的时候增加或者删除。

2.2:创建一个Retrofit的示例,并完成相应的配置
String baseUrl = "https://api.douban.com/v2/movie/";
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(baseUrl)
    //增加返回值为Gson的支持(以实体类返回)
    .addConverterFactory(GsonConverterFactory.create())
    //增加返回值为Oservable的支持
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
    .build();

UrlServer server = retrofit.create(UrlServer.class);

这里baseUrl会和传入的参数拼接成完整的网络请求。

2.3:网络请求
 Call databean = server.getDatabean(1, 10);//获取call的实例。
         //进行异步网络请求
        databean.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, 
            Response response) {
                //直接返回请求后解析好的对象
                 DataBean dataBean = response.body();
            }

            @Override
            public void onFailure(Call call, Throwable t) {
                //请求失败的回调
            }
        });

你可能感兴趣的:(Retrofit 学习使用)