首页 > 解决方案 > 在应用程序端使用改造时无法向用户显示服务器端错误消息

问题描述

我的要求是显示服务器发送给最终用户的各种错误消息。

在服务器上编写的 API 是 RESTful 服务。

例如:

在服务器端,当用户输入错误的用户名/密码时,会生成 400 代码。

我尝试在应用程序端通过 Retrofit 执行在服务器端编写的 API。

当用户输入错误的用户名/密码时,服务器会生成 400 错误请求。

此时,只有onError()方法被执行,而不是执行onNext()方法。

如果onNext()被执行,我将能够显示服务器端错误消息

标签: androidrestretrofitretrofit2

解决方案


恐怕当您将 Retrofit 与 rxjava 集成时,它不是这样工作的。

当你得到一个不是 2XX 的响应代码时,Retrofit 会出错,导致onError方法被调用。从那里,您需要从异常中获取响应错误正文。这是一种非常简单的方法:

public void onError(Throwable e){
    if ( e instanceOf HttpException) {
       HttpException error = (HttpException)e;
       String errorBody = error.response().errorBody().string();
       // now you can parse the error or simply show it
    }
}

请注意,并非所有异常都需要HttpException并且可能需要不同的处理。


推荐阅读