当 Jersey 检测到错误的 xml 时拦截 400 响应生成?
我正在编写一个需要模拟第三方 RESTful 服务器的测试服务器,我正在使用 Jersey 来编写测试服务器。
所有请求都是带有 application/xml 有效负载的 POST,因此我一开始是这样的:
@Path("GetUserDetails")
@POST
@Consumes(MediaType.APPLICATION_XML)
public GetUserDetailsResp GetUserDetails(GetUserDetailsReq request) {
...
}
当 XML 格式错误时,Jersey 很高兴地返回 400(GetUserDetailsReq 是一个 JAXB 对象),这不是我需要的。相反,我需要返回 200 和 XML 错误块。
我可以通过在方法中解组并使用 @Provider/ExceptionMapper 类来绕过 400,但这很笨拙。有没有办法向 Jersey 指定声明性返回 400 的替代方案?也许是 @Provider/ExceptionMapper 的变体?
TIA。
I'm writing a test server that needs to emulate a 3rd party RESTful server, I'm using Jersey to write the test server.
All of the requests are POST with application/xml payloads so I started off with:
@Path("GetUserDetails")
@POST
@Consumes(MediaType.APPLICATION_XML)
public GetUserDetailsResp GetUserDetails(GetUserDetailsReq request) {
...
}
Jersey happily returns 400 when the XML is badly formatted (GetUserDetailsReq is a JAXB object), which is not what I need. Rather I need to return 200 and an XML error block.
I can get around the 400 by unmarshaling in the method and using an @Provider/ExceptionMapper class, but that's clunky. Is there anyway to specify to Jersey an alternative to returning the 400 declaratively? Maybe a variant on @Provider/ExceptionMapper?
TIA.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Pavel Bucek 在邮件列表中回答了这个问题:http://jersey.576304.n2.nabble.com/Intercept-400-response- Generation-when-Jersey-detects-bad-xml-tt7221572.html
Pavel Bucek answered this in the mailing list: http://jersey.576304.n2.nabble.com/Intercept-400-response-generation-when-Jersey-detects-bad-xml-tt7221572.html