Récupération de données JSON POST à partir de HttpServletRequest
Lors de l'exécution d'une requête HTTP POST avec des données codées en JSON, il est essentiel de comprendre la différence entre les données encodage par rapport aux soumissions de formulaires HTML standard. Dans ce cas, les données POST ne sont pas automatiquement accessibles via la méthode HttpServletRequest.getParameter().
Pour récupérer les données JSON POST, vous devez utiliser un décodeur personnalisé capable de traiter le flux de données brutes obtenu à partir de HttpServletRequest. getReader(). Voici un exemple utilisant le package 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... }
Ce code lit les données JSON brutes de la requête, les analyse dans un JSONObject et donne accès aux données contenues dans le objet. Vous pouvez ensuite interagir avec les données JSON selon vos besoins, en extrayant les paramètres et les valeurs dont vous avez besoin.
Notez que cette approche est nécessaire lors de l'utilisation de données POST codées en JSON au lieu du traditionnel "application/x-www-form -urlencoded" encodage utilisé dans les formulaires HTML standards. En utilisant un décodeur personnalisé, vous pouvez récupérer et traiter efficacement les données JSON dans votre application Servlet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!