Ho un app che richiede di sessione (cookie) per elaborare le chiamate web. Sto usando Retrofit+RxJava
. Tuttavia, la sessione potrebbe scadere (errore di retrofit con stato non autorizzato 401) e voglio riautenticarlo (per ottenere nuovi cookie) e riprovare la chiamata precedente in questo caso. Come lo farei con RxJava
?Implementare retryWhen logica
Il mio esempio:
getServerApi().getDialogs(offset, getCookies())
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(observable -> {...}) // Need some logic
.subscribe(dialogsEnvelope -> getView().setDialogs(dialogsEnvelope),
throwable -> getView().setError(processFail(throwable)));
Se la sessione scade ed è necessario riprovare, si fa a ottenere un qualche tipo di risposta del server che indica che (e g a JSON con ' "successo":.. False') o si solo un' RetrofitError'? –
@ david.mihola, ha aggiornato la mia domanda. Ottengo 401 non autorizzati (ottenendo errore Retorfit). – localhost
Penso di avere un'idea, ma mi piacerebbe provarlo prima di pubblicare ... –