当使用rxjava 1.xi用于返回Observable
处理来自改造的空响应时:
@POST( "login" ) ObservablegetToken( @Header( "Authorization" ) String authorization, @Header( "username" ) String username, @Header( "password" ) String password );
但是因为rxjava 2.x不会发出任何东西,Void
是否有任何好的做法来处理那些空的响应?
Completable是为这种情况设计的.它自 RxJava 1.1.1 起可用.来自官方文档:
表示没有任何值的延迟计算,但仅表示完成或异常.该类遵循与Reactive-Streams类似的事件模式:onSubscribe(onError | onComplete)?
所以只需更改方法的返回类型:
@POST("login") Completable getToken(@Header("Authorization") String authorization, @Header("username") String username, @Header("password") String password);
并重写您的订阅者,例如:
apiManager.getToken(auth, name, pass) ... .subscribe(() -> { //success }, exception -> { //error });
另一个解决方案是:
@POST("login") Observable> getToken( @Header( "Authorization" ) String authorization, @Header( "username" ) String username, @Header( "password" ) String password );