In Ihrer Webanwendung senden Sie eine POST-Anfrage an eine bestimmte URL mit JSON-Daten und verwenden HttpServletRequest um auf die POST-Daten zuzugreifen. Wenn Sie jedoch die Anforderungsparameter aufzählen, finden Sie nur den Parameter „cmd“, nicht aber die JSON-Daten.
Normalerweise können Sie GET- und POST-Parameter in einem Servlet mit request.getParameter("paramName" abrufen ") Methode. Dies funktioniert gut, wenn die POST-Daten als Schlüssel-Wert-Paare mit dem Inhaltstyp „application/x-www-form-urlencoded“ codiert sind, wie es in Standard-HTML-Formularen der Fall ist.
In Ihrem Fall, da Sie Wenn Sie einen JSON-Datenstrom senden, müssen Sie einen benutzerdefinierten Decoder verwenden, um den Rohdatenstrom zu verarbeiten, auf den über request.getReader() zugegriffen werden kann. Hier ist ein Beispiel dafür, wie Sie mit der JSON-POST-Verarbeitung umgehen können:
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... }
Zusammenfassend lässt sich sagen, dass Sie, wenn Sie mit JSON-POST-Daten arbeiten, einen benutzerdefinierten Decoder verwenden müssen, um diese direkt aus dem Anforderungstext zu verarbeiten. anstatt sich auf den integrierten Parameteraufzählungsmechanismus zu verlassen.
Das obige ist der detaillierte Inhalt vonWie rufe ich JSON-POST-Daten mit HttpServletRequest ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!