即使响应不成功,我也希望能够对同一个Java对象的网络响应进行反序列化。目前,当我收到类似403的错误响应时,响应正文为空,我期望使用response.errorBody()方法读取已发回的内容,这是正确的。不过,我想避免在改进回调中使用大量代码,只是为了反序列化errorBody。相反,我想有一个拦截器,将errorBody的内容设置为body。Retrofit2即使响应不是200反序列化响应主体
这样做的原因是,我有了两个错误和非错误响应领域,并根据某些领域,预计该响应的状态响应对象,以保留为空如
错误响应JSON
{
"locked":true,
"remaining_attempts": 2
}
成功响应JSON
{
"name":"kev"
"token":"abcdefghijklmnopq"
}
我已经创建了捕获这两种情况下一个Java对象:
class LoginResponse{
@Expose
private String name;
@Expose
private String token;
@Expose
private Boolean locked;
@Expose
private Integer remaining_attempts;
}
有没有办法在拦截器中做到这一点?
我有类似的问题,搜索后我发现,解决办法是编写一个自定义'ConverterFactory'扩展默认改造转换。 –
@MohamedIbrahim任何链接? – kev
我会发布我的答案和更多信息@kev –