Я пытаюсь получить данные поста в Java.Кажется, это должно быть одной из самых простых вещей, чтобы сделать правильно?Я имею в виду, HttpServletRequest.getParameter должен делать это правильно?Итак, как вы можете получить необработанные данные поста?
Я обнаружил HttpServletRequest получил данные JSON POST и использовал код Kdeveloper для извлечения данных поста из запроса.Это работает, но есть одна загвоздка: я могу получить эти почтовые данные только один раз .
Вот метод, который я сделал из кода 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's reader is closed
}
return sb.toString();
}
Ранее я имелзакрыл читателя в конце этого метода, но это вызвало исключения, когда метод выполнялся более одного раза по одному и тому же запросу.Без его закрытия не происходит никаких исключений, но метод возвращает пустую строку.
Честно говоря, должен быть только открытый метод req.getPostData () - никто не думал, что это будет полезно?
Так, как я могу написать этот метод так, чтобы он всегда возвращал правильные данные сообщения?