在进行网络请求的时候,有时后台会直接报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字符串即可。
感谢下面的网址给的提示: