我使用以下异常处理创建了一条骆驼路线:
onException(BadRequestException.class)
.handled(true)
.process(exchange -> {
System.out.println("Reached processor");
System.out.println(exchange.getIn().getBody(String.class));
})
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(HttpStatus.BAD_REQUEST));
Run Code Online (Sandbox Code Playgroud)
我请求 http://localhost:8080/services/rest/endpoint?key=value
在 bean 中,我有一些验证表明需要两个查询参数,key并且keyTwo. keyTwo不存在,所以我抛出一个BadRequestException:
public void assertRequiredParametersPresentOnExchange() throws BadRequestException {
try {
requiredParameters.stream()
.forEach(p -> assertNotNull(p));
} catch (IllegalArgumentException e) {
throw new BadRequestException(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行 URL 时,我可以看到Reached processor上面异常处理程序的输出,但没有任何反应。邮递员等待回复约 60 秒,然后给我状态代码 23。
我在这里缺少什么?环保部?在交易所设置一些属性?
似乎您正在获得 23 的枚举序数。您可以尝试替换枚举吗
org.apache.http.HttpStatus.SC_BAD_REQUEST
Run Code Online (Sandbox Code Playgroud)
代替
org.springframework.http.HttpStatus.BAD_REQUEST
Run Code Online (Sandbox Code Playgroud)
看看它是否有什么不同