在retrofit+Rxjava中如何取得状态码非200(出现错误)时的response里的body

来源:互联网 发布:seo实战什么意思 编辑:程序博客网 时间:2024/06/06 13:58

在retrofit+Rxjava中如何取得状态码非200(出现错误)时的response里的body

请求失败后会进入onError里面。但这个只是个Throwable类,如果直接tostring的话,我们可以看见它是只打印类返回的头部。所以看看能否向下转型,然后取出body。
  这时我们故意发送一个失败请求,可以看见,打印出来的异常是retrofit.HttpException

所以现在我们对它进行向下转型,onError里面代码如下:

@Override                    public void onError(Throwable e) {                        if (e instanceof HttpException) {                            ResponseBody body = ((HttpException) e).response().errorBody();                            try {                                MyLog.Error(body.string());                            } catch (IOException IOe) {                                IOe.printStackTrace();                            }                        }                    }

好了,现在打印出来的就是body了,注意是errorBody.string而不是errorBody.toString,不然它打印出来的只是地址。现在可用Gson等等各种方法了。

原创粉丝点击