在httpResponse的主体中设置字符串

vib*_*has 30 java servlets

我需要帮助.在我目前的开发中,其中一个要求是:

服务器将返回200-OK作为响应(httpresponse).

如果验证了小组成员,那么服务器也必须返回该小组成员的小组成员ID.

服务器将以下列方式将panelist id放在200-OK响应的主体内:

<tdcp>

<cmd>

   <ack cmd=”Init”>

      <panelistid>3849303</panelistid>

   </ack>

</cmd>
Run Code Online (Sandbox Code Playgroud)

现在我可以把httpresponse作为

httpServletResponse.setStatus(HttpServletResponse.SC_OK);
Run Code Online (Sandbox Code Playgroud)

我可以把

String responseToClient= "<tdcp><cmd><ack cmd=”Init”><panelistid>3849303</panelistid></ack></cmd></tdcp>";

现在将上面的xml放在200-OK响应体内的意思是什么呢?它是如何实现的?

Buh*_*ndi 57

您可以将XML直接写入响应,如下所示:

此示例使用a ServletResponse.getWriter(),即将a PrintWriter写入响应的字符串.

String responseToClient= "<tdcp><cmd><ack cmd=”Init”><panelistid>3849303</panelistid></ack></cmd></tdcp>";

httpServletResponse.setStatus(HttpServletResponse.SC_OK);
httpServletResponse.getWriter().write(responseToClient);
httpServletResponse.getWriter().flush();
httpServletResponse.getWriter().close();
Run Code Online (Sandbox Code Playgroud)

  • httpServletResponse.getWriter().close()不是一个好主意.通常,关闭未打开的流不是一个好主意. (34认同)
  • 这确实很有帮助,但是,在使用 JSON 主体时我没有立即收到主体。我必须添加以下内容: httpServletResponse.setContentType("application/json"); httpServletResponse.setCharacterEncoding("UTF-8"); (3认同)

Jon*_*eet 6

您只需要获取servlet响应的输出流(或输出编写器),然后写入.见ServletResponse.getOutputStream()ServletResponse.getWriter()更多的细节.

(或者只是阅读任何servlet教程 - 没有能力在响应主体中包含数据,servlet将毫无用处:)