Normaly你可以在同一个servlet GET和POST参数方法:
request.getParameter("cmd");
但是,只有当POST数据是encoded内容类型的键值对:“应用程序/ x-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())' – 2017-02-22 06:17:35
上面提到的throws stream已经关闭异常 – Pat 2017-04-03 16:36:21
如果使用'getReader()'这个流将被关闭,因为它最初只能被读取一次。在包装器实现方面有很多方法可以允许多次调用getReader()' – 2018-03-05 18:46:16