自定义错误处理CallAdapter for Retofit2 + RxJava2

时间:2019-06-26 12:17:37

标签: android retrofit2 rx-java2

服务器在成功的情况下发送响应(代码2xx):

{
    "user":"User",
    "age":16
}

如果失败(4xx),则会在errorBody 内部发送以下Json

{
    "errorMessage":"Server is not working",
    "action":{
         ...
    }
}

我正在使用Retrofit v2.4.0和RxJava2。

如何为我的案例创建自定义CallAdapter我已经阅读了Square的ErrorHandlingAdapter,但是它没有RxJava2

1 个答案:

答案 0 :(得分:0)

强烈建议您使用相同的对象,因为可以进行翻新,您可以使用通用模型进行

public class GenericResponseModel {
    public int statusCode;
    public String message;
    public Object data;
}

,然后解析为onNetworkSuccess和onNetworkError中的特定模型,如下所示:

HomeModel homeModel = new Gson().fromJson(new Gson().toJson(genericResponseModel.data), HomeModel[].class);

使用这种方法,您可以制作BaseModel,也可以处理不同的响应。我希望这是您找到的答案。

  

您可以删除statusCode,如果没有响应则显示消息