如何使用jax-rs获取完整的原因短语(或原始响应)?

时间:2013-10-16 11:43:04

标签: java http jax-rs httpresponse

我有一个API,在某些情况下会返回具有以下状态行的响应:

HTTP/1.1 500 Internal Server Error: An error occurred (23000): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'name'

我正在捕捉结果WebApplicationException,然后使用以下内容尝试获取原因短语:

e.getResponse().getStatusInfo().getReasonPhrase()

但是,这只会返回“内部服务器错误”,这不是很有用。我想记录完整的原因短语,以便在出现问题时记录更具体的内容。

有没有办法获得完整的短语?如果没有,有没有办法从异常的响应对象获取原始响应?然后我至少可以尝试自己解析它。

编辑另外,我可以确认正文是空的,并且任何其他标题中都没有显示合适的信息。我正在使用Fiddler检查原始回复。

编辑2:我使用的是cxf-rt-frontend-jaxrs 2.7.5

1 个答案:

答案 0 :(得分:2)

据我所知,getReasonPhrase调用仅返回HTTP响应代码规范定义的短语 - 它实际上并未将其解析出状态行。您正在调用的应用程序将诊断消息写入状态行而不是响应正文,这很奇怪。也许这是该应用程序中的一个错误?

编辑正如我所想,原因短语是hard-coded in the status enum(甚至不是可本地化的!坏太阳!)