【发布时间】:2017-07-04 13:12:38
【问题描述】:
即使响应不成功,我也希望能够反序列化对同一 Java 对象的网络响应。目前,当我收到类似 403 的错误响应时,响应正文为空,我应该使用 response.errorBody() 方法读取已发回的任何内容,这没关系。但是我想避免在改造回调中有很多代码只是为了反序列化errorBody。相反,我想要一个拦截器,将 errorBody 的内容设置为正文。
这样做的原因是我有一个响应对象,该对象包含错误和非错误响应的字段,并且根据响应的状态,某些字段应为空,例如
错误响应 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 发布我的答案并提供更多信息