如果我将自定义错误处理程序添加到int-http:outbound-gateway,则根据预期响应类型不会对响应主体进行解组,而是仅返回ResponseEntity。我的自定义错误处理程序非常简单:
public class MyResponseErrorHandler extends DefaultResponseErrorHandler {
private static final Logger log = LoggerFactory.getLogger(AlmaGetUserResponseErrorHandler.class);
@Override
public boolean hasError(final ClientHttpResponse response) throws IOException {
// stop http 400 from returning true to error here.
log.debug("Request has returned error code {}", response.getStatusCode());
if (response.getBody() != null) {
String returnBody = IOUtils.toString(response.getBody(), "UTF-8");
log.debug("Checking error from response, code {}, body {}", response.getStatusCode(), returnBody);
}
return false;
}
}
一旦我删除了错误处理程序,它就会正确地将XML响应解组到我的POJO中。
答案 0 :(得分:1)
上面的问题是MyResponseErrorHandler类在将正文内容传递给期望响应类型的编组器之前将其流出。因此,正文为null,并返回了一个简单的ResponseEntity。