【发布时间】:2011-04-22 14:13:25
【问题描述】:
我想写一个 servlet,它会像这样返回一个 http 响应:
HTTP/1.1 500 <short custom message>
Content-Length: ...
<longer custom message>
原因是我希望程序化客户端能够处理响应消息以获取特定响应,但我也想在响应正文中填写更长的解释,以便使用浏览器轻松点击。
现在,HttpServletResponse 有一个 sendError(int, String) 方法,它允许我指定错误代码和消息。 javadocs只说消息将嵌入某种html页面,但没有设置http响应消息。调用此方法后,您将无法在响应中写入任何其他内容。在我的测试(使用码头)中,该消息同时用于 http 响应和 html 正文,这对我来说很好,除了我想指定两个不同的字符串并且我不认为 http 响应的设置消息通过不同的实现得到保证。
还有一个 setStatus(int) 方法,您可以使用任何代码调用它,然后您可以编写自己的 html 正文。这很接近,除了你不能指定http响应消息。
最后,有一个 setStatus(int, String) 方法实际上完全符合我的要求,但由于某种歧义,它已被弃用。我假设一些 servlet 容器正在将消息写入响应正文并关闭响应。
除了使用不推荐使用的方法之外,我假设我在这里搞砸了,但我很好奇是否有人知道任何技巧?
【问题讨论】:
标签: java servlets httpresponse