Я реализовал POJO так.Как отправить onError, если результат недействителен в RxJava
public class WebResponse<T> {
private String Response;
private String Message;
private T Result;
}
В качестве примера, если Response
успех, я буду получать массив стран Result
.
Для выполнения операций композиции на Country
s только I flatMap
'd WebResponse и применил соответствующие операторы. Как так:
Observable<WebResponse<ArrayList<Country>>> countryListAsObservable = api.getCountryListAsObservable();
countryListAsObservable
.subscribeOn(AndroidSchedulers.mainThread())
.flatMap(
new Func1<WebResponse<ArrayList<Country>>, Observable<?>>() {
@Override
public Observable<Country> call(WebResponse<ArrayList<Country>> arrayListWebResponse) {
return Observable.from(arrayListWebResponse.getResult());
}
})
.map(new Func1<Country, String>() {
@Override
public String call(Country country) {
return country.getName();
}
})
.subscribe(
new Action1<String>() {
@Override
public void call(String o) {
Log.i("Country name", o);
}
});
Теперь есть шанс, что сам сервер будет посылать сбой, который будет в Response
. Когда это произойдет, я хочу вызвать Subscriber
s onError()
.
Как я могу это сделать, не нарушая цепь?
Где она в настоящее время перерыва? – Leon
Служба json, которую я использую в настоящее время, не нарушает. Но если он должен был сломаться, тогда он ломается в 'flatMap', т. Е. Когда он обнаруживает, что' getResult() 'возвращает' null'; – prometheuspk
То, что я имею в виду, это вы протестировали его, чтобы увидеть, что происходит, когда это неправильный результат. BEcause, если я правильно вас понимаю, вы должны проверить ответ, и если это не то, что вы ожидали, поднимите соответствующее исключение – Leon