Retrofit/RxJava - получить код ответа http
Android, Retrofit, RxJava. Пожалуйста, посмотрите на этот пример вызова:
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();
});
Кто-нибудь знает, как получить код ошибки (как номер ошибки) из throwable? Я могу получить полную трассировку стека или сообщение (как показано выше). Как захватить код ошибки?
2 ответа
Решение
Просто использовать кастинг??
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();
});
Модификация 2 + ошибка обработки Rxjava вот ваш ответ
@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;
}
смотрите здесь для большего.