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