Http 响应仅包含输入 HttpServletResponse.getWriter 的第一个字符
Http Response contains only first character entered into HttpServletResponse.getWriter
我目前正在编写一个 servlet,它应该允许用户编写自定义 rest 端点。端点产生一个 RestResponse
对象,我试图将其转换为最终的 HTTPServletResponse
对象。
RestResponse
包含代表响应主体的 org.json.simple.JSONObject
。我现在需要将此对象放入 HTTP 响应的正文中。
我的想法是使用 HTTPServletResponse
的 PrintWriter
,根据调试器,整个 JSONObject
在 [=18= 的 CharBuffer
中结束] 因为它应该,但是在我的浏览器内的最终 HTTP 响应主体中,只有第一个字符。
rest
是我的 RestResponse
对象,http
是我的 HTTPServletResponse
对象(自提交到 servlet 的 doGet
方法后未发生变化)
我尝试使用各种不同的方法,例如:
if (rest.hasBody()) {
//TODO this somehow fails to write a valid JSON String to the HTTP Body
PrintWriter writer = http.getWriter();
rest.getBody().writeJSONString(writer);
//Here the proper json string ends in the buffer of the writer
writer.flush();
writer.close();
}
if (rest.hasBody()) {
//TODO this somehow fails to write a valid JSON String to the HTTP Body
PrintWriter writer = http.getWriter();
writer.write(rest.getBody.toJSONString());
//Here the proper json string ends in the buffer of the writer
writer.flush();
writer.close();
}
if (rest.hasBody()) {
//TODO this somehow fails to write a valid JSON String to the HTTP Body
PrintWriter writer = http.getWriter();
writer.append(rest.getBody.toJSONString());
//Here the proper json string ends in the buffer of the writer
writer.flush();
writer.close();
}
依此类推,结果都一样
我已经调试了几个小时了,但我仍然没有弄清楚哪里出了问题,有人知道吗?
干杯
所以我的问题是不知何故我设置了 http.setContentlength(variable)
变量意外地是 1,因此显然正文将只包含第一个字符。
我目前正在编写一个 servlet,它应该允许用户编写自定义 rest 端点。端点产生一个 RestResponse
对象,我试图将其转换为最终的 HTTPServletResponse
对象。
RestResponse
包含代表响应主体的 org.json.simple.JSONObject
。我现在需要将此对象放入 HTTP 响应的正文中。
我的想法是使用 HTTPServletResponse
的 PrintWriter
,根据调试器,整个 JSONObject
在 [=18= 的 CharBuffer
中结束] 因为它应该,但是在我的浏览器内的最终 HTTP 响应主体中,只有第一个字符。
rest
是我的 RestResponse
对象,http
是我的 HTTPServletResponse
对象(自提交到 servlet 的 doGet
方法后未发生变化)
我尝试使用各种不同的方法,例如:
if (rest.hasBody()) {
//TODO this somehow fails to write a valid JSON String to the HTTP Body
PrintWriter writer = http.getWriter();
rest.getBody().writeJSONString(writer);
//Here the proper json string ends in the buffer of the writer
writer.flush();
writer.close();
}
if (rest.hasBody()) {
//TODO this somehow fails to write a valid JSON String to the HTTP Body
PrintWriter writer = http.getWriter();
writer.write(rest.getBody.toJSONString());
//Here the proper json string ends in the buffer of the writer
writer.flush();
writer.close();
}
if (rest.hasBody()) {
//TODO this somehow fails to write a valid JSON String to the HTTP Body
PrintWriter writer = http.getWriter();
writer.append(rest.getBody.toJSONString());
//Here the proper json string ends in the buffer of the writer
writer.flush();
writer.close();
}
依此类推,结果都一样
我已经调试了几个小时了,但我仍然没有弄清楚哪里出了问题,有人知道吗?
干杯
所以我的问题是不知何故我设置了 http.setContentlength(variable)
变量意外地是 1,因此显然正文将只包含第一个字符。