Accès aux données JSON POST dans HttpServletRequest
Lors de l'envoi de données HTTP POST au format JSON vers une servlet, il est nécessaire de comprendre les différents encodages de données impliqués . Par défaut, les servlets peuvent récupérer les paramètres à l'aide de request.getParameter(). Cependant, pour les données JSON, le schéma de codage standard "application/x-www-form-urlencoded" n'est pas utilisé.
Pour récupérer les données JSON POST, vous devez utiliser un décodeur personnalisé qui traite le flux de données brut à partir de request.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 le flux de données JSON à partir de la requête, l'analyse à l'aide du package org.json et stocke le résultat dans un JSONObject. Vous pouvez ensuite accéder aux paramètres JSON à l'aide de méthodes telles que jsonObject.getInt(), jsonObject.getString(), etc.
Notez que cette approche ne se limite pas aux données JSON. Vous pouvez utiliser la même technique pour traiter tout type de données POST personnalisées qui ne sont pas codées sous forme de paires clé-valeur.
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!