Spring集成,在http出站网关上设置错误处理程序

时间:2016-04-20 13:21:53

标签: spring-integration

如果我将自定义错误处理程序添加到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中。

1 个答案:

答案 0 :(得分:1)

上面的问题是MyResponseErrorHandler类在将正文内容传递给期望响应类型的编组器之前将其流出。因此,正文为null,并返回了一个简单的ResponseEntity。