Rxjava 1.xを使用する場合、レトロフィットからの空の応答を処理するためにObservable<Void>
を返していました。
@POST( "login" )
Observable<Void> getToken( @Header( "Authorization" ) String authorization,
@Header( "username" ) String username,
@Header( "password" ) String password );
しかし、rxjava 2.xはVoid
で何も出力しないので、これらの空の応答を処理するための良い習慣はありますか?
Completable はそのような場合のために設計されました。利用可能 since 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<Response<Void>> getToken( @Header( "Authorization" ) String authorization,
@Header( "username" ) String username,
@Header( "password" ) String password );