Retrofit+RxJava网络请求失败,报400错误,但返回的错误信息包含(json字符串)

在进行网络请求的时候,有时后台会直接报400,但是将完整的接口放到三方postman中提示的是:

后台返回了json数据,经过查找,找到拿到json数据的方法:

首先这个网络请求失败返回的结果肯定是到了onError()里面了,在onError()方法里返回了一个Throwable对象,先判断这个Throwable对象是否属于HttpException(必须看一下是否在retrofit2.adapter.rxjava包下,开始我的不是在这个包下,所以错误,改过来就好了),因为就算是json解析异常等错误也会在onError()这个方法里面,在HttpException中code,message,response,message的解释是HTTP status message,也就是网络请求状态的信息,和code差不多,重要的是response,这是一个Response对象,这个对象里面有一个ResponseBody对象,也就是errorBody,ResponseBody类中有个string()方法,就是这个方法,可以直接输出请求失败情况下返回的json字符串(在解析)。

 @Override
    public void onError(Throwable e) {
        dismissProgressDialog();
        Log.e(TAG, "onError: ", e);
        if (e instanceof HttpException) {
            HttpException httpException = (HttpException) e;
            try{
                String error = httpException.response().errorBody().string();
                BaseErrorBean bean = new Gson().fromJson(error , BaseErrorBean.class);
                ToastUtil.showLongToast(bean.getError());
            }catch(IOException e1) {
                e1.printStackTrace();
            }
        }else {
            ToastUtil.showLongToast("请求失败");
        }
    }

打印出error字符串即可。

感谢下面的网址给的提示:

https://www.jianshu.com/p/e44dae261333

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值