Zugriff auf JSON-POST-Daten in HttpServletRequest
Wenn Sie eine HTTP-POST-Anfrage mit JSON-Daten im Text stellen, kann das Abrufen der Anfragedaten ein Problem sein Herausforderung, wenn die traditionelle getParameter-Methode verwendet wird. Dies liegt daran, dass getParameter nur mit Schlüssel-Wert-Paaren funktioniert, die im Format „application/x-www-form-urlencoded“ codiert sind.
Für JSON-Datenströme ist jedoch ein benutzerdefinierter Ansatz erforderlich.
Benutzerdefinierter Decoder für JSON-Daten
Um auf die JSON-POST-Daten zuzugreifen, müssen Sie verwenden BufferedReader zum Verarbeiten des Rohdatenstroms:
BufferedReader reader = request.getReader();
Beispiel für die Verwendung des org.json-Pakets
Unten finden Sie ein Beispiel, das die beliebte org.json-Bibliothek zum Dekodieren von JSON verwendet POST-Daten:
@Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { 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"); } }
Dieser Code liest die JSON-Daten und wandelt sie zur weiteren Verarbeitung in ein JSONObject um Verarbeitung. Anschließend können Sie Methoden wie getInt, getString und getJSONArray verwenden, um die spezifischen Daten zu extrahieren, die Sie benötigen.
Das obige ist der detaillierte Inhalt vonWie greife ich mit HttpServletRequest auf JSON-POST-Daten in einem Servlet zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!