【问题标题】:How to send status from servlet to client?如何将状态从 servlet 发送到客户端?
【发布时间】:2015-03-26 02:02:10
【问题描述】:

我的客户端将文件上传到我的 Web 应用程序,在该应用程序中处理该文件并将该文件返回给客户端。我的客户端是用 java 编写的,使用 servlet 的服务器端应用程序也是如此。我的问题是当处理中出现一些错误时,如何将错误从服务器发送到客户端。这样客户端就不会去下载文件,而是通过打印错误退出。我不知道与客户沟通此消息的标准方式是什么。 我目前正在做的是使用response.setHeader

response.setHeader("codesign-status", "0");
response.setHeader("codesign-msg", "File available for download ");

我正在阅读客户端连接上的这些标头以检查错误。 这是与客户交流消息的标准方式吗?

【问题讨论】:

  • 返回一个错误的 HTTP 状态码,(例如 HTTP 错误 4xx 和 5xx),并带有作为实体正文的消息。
  • 您是否有理由不喜欢使用标准状态代码作为响应? 200/OK 表示成功,500/Internal Server Error 表示处理错误。
  • @BuhakeSindi 但是这些错误可能不是http错误。这可能是简单的错误,状态为 -1、-2 和错误消息字符串。如果这可行,如何从 servlet 发送这些代码并在客户端接收。
  • @ramp 但是这些错误可能不是http错误。这可能是简单的错误,状态为 -1、-2 和错误消息字符串
  • 您必须返回一个 HTTP 错误代码,并且您的部分消息将包含您的自定义状态代码。

标签: java servlets


【解决方案1】:

考虑使用标准 HTTP 响应代码和sendError()方法:

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    if (!response.isCommitted()) {
        response.sendError(
            HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
            "Error message");
    }
//...
}

【讨论】:

  • 如何在使用 HttpConnection 的 Java 客户端上得到这个错误?我要打印此错误以及状态。而且状态不一定是Http错误。
  • 这是一个很好的客户端示例:stackoverflow.com/a/1441491/1740554
猜你喜欢
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 2018-01-02
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多