我正在使用Retrofit 2.0进行返回Observable的api调用。当通话顺利并且响应如预期时,一切都很好。现在,我们有一个错误响应,它抛出一个onError。我想读取响应正文,即使它是一个错误。
例子
@FormUrlEncoded
@POST("tokenLogin")
Observable<LoginResponse> loginWithToken(
@Field("token") String pin
);
当请求和响应有效时,我可以观察到正确的消息,并且在出现错误时按预期方式调用onError。
正确回应:
{ "status" : "authenticated" }
Observable将其转换为正确的Observable,我可以将响应读取为LoginResponse对象。
现在,错误响应如下:
{ "errorMessage" : "You need to take some xyz action" }
我想阅读该错误响应并将消息显示给用户。我该怎么做呢?
只需检查throwable是否是HttpException的实例,然后就可以访问改造响应
if (e instanceof HttpException) {
ResponseBody body = ((HttpException) e).response().errorBody();
...
}
然后,您可以使用转换器反序列化它(或自己完成)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句