В настоящее время я пишу сервлет, который должен позволять пользователю писать собственные конечные точки отдыха. Конечные точки создают объект RestResponse
, который я пытаюсь преобразовать в конечный объект HTTPServletResponse
.
RestResponse
содержит org.json.simple.JSONObject
, представляющий тело ответа. Теперь мне нужно поместить этот объект в тело HTTP-ответа.
Моя идея состоит в том, чтобы использовать PrintWriter
из HTTPServletResponse
. Согласно отладчику, все JSONObject
заканчивается в CharBuffer
PrintWriter
, как и должно быть, однако в окончательном теле ответа HTTP внутри моего браузера есть только первый символ.
rest
- это мой RestResponse
объект, а http
- мой HTTPServletResponse
объект (не изменяется с момента передачи в метод 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();
}
и так далее, все дает одинаковый результат
Я отлаживал это уже несколько часов и до сих пор не понял, в чем дело, у кого-нибудь есть идея?
Приветствия