En utilisant Retrofit2 (Ver: 2.3.0), OkHTTP3 (Ver: 3.9.0) avec RxJava2 (Ver: 2.0.0)Répéter un appel api-Retrofit2.0 en fonction de la réponse du serveur
Scénario d'un appel reste api
Observable<ServerResponse> backendService.isUserVerified("someuserName")
qui retourne un 200 Ok HTTP
Réponse Le succès attendu JSON POJO si l'utilisateur est vérifiée
{
user: "someUserName",
isVerified: "yes"
}
Réponse succès escompté JSON POJO si l'utilisateur n'a pas vérifié
{
user: "someUserName",
isVerified: "no"
}
code suivant est que je suis en train de mettre en œuvre
backendService.isUserVerified("someuserName")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
//Want to add a flatmap (or some other operator)
.flatmap(new Function<ServerResponse>, ObservableSource<?>>(){
@Override
public ObservableSource<?> apply(ServerResponse serverResponse) throws Exception {
if(0 != serverResponse.getisVerified.compareToIgnoreCase("yes")) {
return Observable.error(new CustomException());
}
return //current observable.
}
.retryWhen(mRetryHandler)
.subscribeWith(observer);
Le but est de lancer une exception personnalisée si elle est vérifiée == pas de sorte que l'opérateur retryWhen() puisse intervenir pour répéter la chaîne d'appel, sinon, il faut passer par la chaîne jusqu'à subscribe().
Des pointeurs/une aide?
Pouvez-vous expliquer plus ce que vous voulez faire? Vous voulez remplacer 'ObservableResource >' avec ce que vous voulez continuer? –
Oui ObservableSource pour les scénarios d'erreur et de repli ... – shyguy