When using rxjava 1.x i used to return Observable<Void>
to handle empty response from retrofit:
@POST( "login" )
Observable<Void> getToken( @Header( "Authorization" ) String authorization,
@Header( "username" ) String username,
@Header( "password" ) String password );
But since rxjava 2.x won't emit anything with Void
is there any good practice to handle those empty responses?
Completable was designed for such cases. It available since RxJava 1.1.1. From the official docs:
Represents a deferred computation without any value but only indication for completion or exception. The class follows a similar event pattern as Reactive-Streams: onSubscribe (onError|onComplete)?
So just change your method's return type:
@POST("login")
Completable getToken(@Header("Authorization") String authorization,
@Header("username") String username,
@Header("password") String password);
And rewrite your subscriber, e.g.:
apiManager.getToken(auth, name, pass)
...
.subscribe(() -> {
//success
}, exception -> {
//error
});