处理Retrofit 2 RX中的错误

Dmi*_*din 8 android rx-java retrofit

我的请求应该获得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());
    }
}
Run Code Online (Sandbox Code Playgroud)

Bla*_*elt 11

由于您使用的是RxJava,onError因此在网络错误和端点相关错误的情况下被调用是其中的一部分Response.如果出现错误,请检查throwable是否是HttpException的实例

public void onError(Throwable e) {
    if (e instanceof HttpException) {
Run Code Online (Sandbox Code Playgroud)

如果检查结果为true,则表示您的请求中存在错误.将throwable转换为HttpException,并且访问是成员.例如

((HttpException) e).response().errorBody()
Run Code Online (Sandbox Code Playgroud)

如果检查,false那么您有网络相关的错误.