1

在某些情况下,我有一个 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

4

1 回答 1

3

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

编辑正如我所想,原因短语在状态枚举中是硬编码的(甚至不能本地化!坏太阳!)

于 2013-10-16T12:01:22.090 回答