retrofit 2学习

一、注意事项

1、请求接口不能继承自其他接口,不然报错

java.lang.IllegalArgumentException: API interfaces must not extend other interfaces.
如:

public interface PostYouDaoI extends PostBaseI{

    @POST("/translate?doctype=json&jsonversion=&type=&keyfrom=&model=&mid=&imei=&vendor=&screen" +
            "=&ssid=&network=&abtest=")
    @FormUrlEncoded
    Call<BeanYouDao> getTrans(@Field("i") String text);
}
接口PostYouDaoI继承自PostBaseI,将会报错。

2、url地址和参数由方法传入

public interface PostYouDaoI {

    @POST
    @FormUrlEncoded
    Call<BeanYouDao> getTransHttp(@Url String url, @FieldMap Map<String, String> map);
}

这里的url地址由方法传入,不像上例中,在注解中配置。

3、Retrofit与RxJava配合使用的时候,在创建Retrofit的时候,要加一句:

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
不然报错:
java.lang.RuntimeException: Unable to start activity ComponentInfo{}: java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable<>
例如:

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("")
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .build();

二、结论

     优点:retrofit可与RxJava集成使用,直接使用较为方便。

     总结:retrofit已经对OkHttp做了高度封装,直接使用较为方便,如果是业务较为复杂的应用,需要再做封装,则retrofit不适合,retrofit每个请求都要对应一个请求接口和一个Bean数据容器,所以接口较多时,会产生大量的接口。




猜你喜欢

转载自blog.csdn.net/yu75567218/article/details/79140657