Normaly вы можете получить и параметры POST в сервлет то же самое путь:
request.getParameter("cmd");
Но только если данные POST является encoded в качестве значения ключа пара типа контента: «применение/х-WWW-форм-urlencoded», как при использовании стандартной формы HTML.
Если вы используете другую схему кодирования для почтовых данных, как в вашем случае, когда вы размещаете поток данных в JSon, вам нужно использовать пользовательский декодер, который может обрабатывать необработанный поток данных от:
BufferedReader reader = request.getReader();
Json пример постобработки (использует org.json пакетов)
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) { /*report an error*/ }
try {
JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
} catch (JSONException e) {
// crash and burn
throw new IOException("Error parsing JSON request string");
}
// Work with the data using methods like...
// int someInt = jsonObject.getInt("intParamName");
// String someString = jsonObject.getString("stringParamName");
// JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName");
// JSONArray arr = jsonObject.getJSONArray("arrayParamName");
// etc...
}
Это простой способ получить данные запроса 'request.getReader(). Lines().collect (Collectors.joining()) ' –
вышеупомянутый поток потоков уже закрытых исключений – Pat
Если вы используете' getReader(), поток будет закрыт, так как изначально он может быть прочитан только один раз. Существует несколько альтернатив для реализаций Wrapper, чтобы разрешить несколько вызовов 'getReader()' –