一、注意事项
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数据容器,所以接口较多时,会产生大量的接口。