我的请求应该获得POJO的JSON或JSON描述的错误(可能是无效的请求字段,服务器问题等)。
但订阅者的改造只给了我Throwable。我怎样才能发现网络错误,http代码是什么,并且JSON出错?
private class ProjectListSubscriber extends Subscriber<ProjectListResponse> {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
//is that a network? http code? convert json to error POJO?
}
@Override
public void onNext(ProjectListResponse projectListResponse) {
updateProjectList(projectListResponse.getProjectList());
}
}
答案 0 :(得分:11)
由于您使用的是RxJava,因此在发生网络错误时会调用onError
,并且与端点相关的错误是Response
的一部分。
如果出现错误,请检查throwable是否为HttpException
public void onError(Throwable e) {
if (e instanceof HttpException) {
如果检查结果为true,则表示您的请求中有错误。将throwable转换为HttpException
,访问权限为成员。例如。
((HttpException) e).response().errorBody()
如果支票为false
,则表示您遇到与网络相关的错误。