Abrufen von JSON-POST-Daten von HttpServletRequest
Beim Durchführen einer HTTP-POST-Anfrage mit JSON-codierten Daten ist es wichtig, den Unterschied in den Daten zu verstehen Codierung im Vergleich zu Standard-HTML-Formularübermittlungen. In diesem Fall ist der Zugriff auf die POST-Daten nicht automatisch über die Methode HttpServletRequest.getParameter() möglich.
Um JSON-POST-Daten abzurufen, müssen Sie einen benutzerdefinierten Decoder verwenden, der den von HttpServletRequest erhaltenen Rohdatenstrom verarbeiten kann. getReader(). Hier ist ein Beispiel für die Verwendung des Pakets 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... }
Dieser Code liest die JSON-Rohdaten aus der Anfrage, analysiert sie in ein JSONObject und bietet Zugriff auf die Daten darin Objekt. Anschließend können Sie nach Bedarf mit den JSON-Daten interagieren und die benötigten Parameter und Werte extrahieren.
Beachten Sie, dass dieser Ansatz erforderlich ist, wenn JSON-codierte POST-Daten anstelle des herkömmlichen „application/x-www-form“ verwendet werden -urlencoded“-Kodierung, die in Standard-HTML-Formularen verwendet wird. Durch die Verwendung eines benutzerdefinierten Decoders können Sie die JSON-Daten in Ihrer Servlet-Anwendung effizient abrufen und verarbeiten.
Das obige ist der detaillierte Inhalt vonWie rufe ich JSON-POST-Daten von einem HttpServletRequest ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!