Я пытаюсь получить данные post на Java. Похоже, это должно быть одной из самых простых вещей, чтобы сделать правильно? Я имею в виду, что HttpServletRequest.getParameter должен делать это правильно? Итак, как вы можете получить исходные данные?
Я нашел HttpServletRequest получить данные JSON POST и использовал код Kdeveloper, чтобы вытащить данные сообщения из запроса. Он работает, но theres catch: я могу получить только данные после этого.
Вот метод, который я сделал из кода Kdeveloper:
public static String getPostData(HttpServletRequest req) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader = req.getReader();
reader.mark(10000);
String line;
do {
line = reader.readLine();
sb.append(line).append("\n");
} while (line != null);
reader.reset();
// do NOT close the reader here, or you won't be able to get the post data twice
} catch(IOException e) {
logger.warn("getPostData couldn't.. get the post data", e); // This has happened if the request reader is closed
}
return sb.toString();
}
Раньше я закрывал читателя в конце этого метода, но это вызывало исключения, когда метод запускался более одного раза с тем же запросом. Без его закрытия никаких исключений не происходит, но метод возвращает пустую строку.
Честно говоря, должен быть только открытый метод req.getPostData() - никто не думал, что это будет полезно?
Итак, как я могу написать этот метод, чтобы он всегда возвращал правильные данные сообщения?