Reputation: 7984
Android, Retrofit, RxJava. Please look at this example call:
mcityService.signOut(signOutRequest)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(resp ->
{
busyIndicator.dismiss();
finish();
}, throwable ->
{
Log.d(tag, throwable.toString());
busyIndicator.dismiss();
Toast.makeText(this,throwable.getMessage(),Toast.LENGTH_LONG).show();
finish();
});
Does anybody know how to get error code (as error number) from throwable? I am able to get full stacktrace or message (as shown above). How to capture error code?
Upvotes: 7
Views: 5011
Reputation: 13481
Just use casting??
mcityService.signOut(signOutRequest)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(resp ->
{
busyIndicator.dismiss();
finish();
}, throwable ->
{
Log.d(tag, throwable.toString());
Log.d(code, ((HttpException)throwable).code());
busyIndicator.dismiss();
Toast.makeText(this,throwable.getMessage(),Toast.LENGTH_LONG).show();
finish();
});
Upvotes: 6
Reputation: 291
Retrofit 2 + Rxjava handling error here is your answer
@Override
public void onError(Throwable e) {
if (e instanceof HttpException) {
ResponseBody body = ((HttpException) e).response().errorBody();
Converter<ResponseBody, Error> errorConverter =
application.getRetrofit().responseBodyConverter(Error.class, new Annotation[0]);
// Convert the error body into our Error type.
try {
Error error = errorConverter.convert(body);
Log.i("","ERROR: " + error.message);
mLoginView.errorText(error.message);
} catch (IOException e1) {
e1.printStackTrace();
}
}
static class Error{
String message;
}
see here for more .
Upvotes: 3