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