Heim >Java >javaLernprogramm >Wie rufe ich JSON-POST-Daten mit HttpServletRequest ab?

Wie rufe ich JSON-POST-Daten mit HttpServletRequest ab?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 21:19:15798Durchsuche

How to Retrieve JSON POST Data Using HttpServletRequest?

HttpServletRequest: JSON-POST-Daten abrufen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn