在 HttpServletRequest 中访问 JSON POST 数据
当在正文中使用 JSON 数据发出 HTTP POST 请求时,检索请求数据可以是挑战是否使用传统的 getParameter 方法。这是因为 getParameter 仅适用于以“application/x-www-form-urlencoded”格式编码的键值对。
但是,对于 JSON 数据流,需要自定义方法。
JSON数据的自定义解码器
要访问JSON POST数据,需要利用BufferedReader来处理原始数据流:
BufferedReader reader = request.getReader();
使用 org.json 包的示例
下面是一个使用流行的 org.json 库来解码 JSON POST 数据的示例:
@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"); } }
此代码读取 JSON 数据并将其转换为 JSONObject 以进行进一步处理。然后,您可以使用 getInt、getString 和 getJSONArray 等方法来提取您需要的特定数据。
以上是如何使用 HttpServletRequest 访问 Servlet 中的 JSON POST 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!