vbN*_*bie 4 java servlets httpresponse error-code httprequest
我试图确定为什么网络服务器响应最初在处理过程中抛出异常;然后客户端返回200 OK。详情如下所示:
请求从 Web 应用程序发送到 Web 服务器,如果发生错误,则会捕获异常并返回相关代码和/或消息,如下所示:
public void dispatchRequest(HttpServletRequest req, HttpServletResponse
res)
{
if (method.equalsIgnoreCase("get")) {
doGet(req, res);
} else {
res.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
return;
}
}
void doGet(HttpServletRequest request, HttpServletResponse response)
throws
IOException,
HTTPServerException {
handleGetClient(request, response);
}
@SuppressWarnings("unchecked")
private void handleGetClient(HttpServletRequest request,
HttpServletResponse
response)
throws IOException, HTTPServerException {
...
} catch (IOException e) {
logger("I/O Error during playback with parameters (additional
parameters logged) {0}: {1}",traceParams,e.toString());
logger(Level.FINER, "I/O Error during playback with parameters {0}:
{1}", parameters, e.getMessage());
logger(Level.FINER, "I/O Error during playback with parameters {0}:
{1}", parameters, e);
sendError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
...
}
protected void sendError(HttpServletResponse response, int errCode) {
response.setContentType("text/plain");
try {
response.sendError(errCode,"ERROR");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)handleGetClient 方法处理该过程,并在发生错误时引发异常并被捕获。然后,该方法使用 sendError 方法来设置返回的错误代码,并且在日志调试时,我可以看到该错误代码已设置为该特定错误 (500)。但是,一旦调用返回到dispatchRequest 方法,httpservletResponse 状态实际上是(200)。我看不出这种情况发生在哪里以及为什么。最初我以为我可以将方法更改为 int 以返回错误代码,但我只能对此代码进行更改。
有任何想法吗?
您可以尝试以下方法之一:
response.resetBuffer ();
response.setStatus (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
response.flushBuffer ();
Run Code Online (Sandbox Code Playgroud)
或者如果您有一个与 500 代码匹配的错误页面web.xml:
response.reset ();
response.setError (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
Run Code Online (Sandbox Code Playgroud)
对于任何一般错误,您还可以考虑使用异常映射器,因此您不必自己处理错误代码,而只需抛出一个异常来处理状态代码返回。
IE:throw new InternalServerException ("Your message");
| 归档时间: |
|
| 查看次数: |
6475 次 |
| 最近记录: |