首页 > Java > java教程 > 如何使用 HttpServletRequest 检索 JSON POST 数据?

如何使用 HttpServletRequest 检索 JSON POST 数据?

Susan Sarandon
发布: 2024-12-19 21:19:15
原创
795 人浏览过

How to Retrieve JSON POST Data Using HttpServletRequest?

HttpServletRequest:检索 JSON POST 数据

在您的 Web 应用程序中,您将使用 JSON 数据向特定 URL 发送 POST 请求,并且您正在使用 HttpServletRequest访问 POST 数据。但是,在枚举请求参数时,只能找到“cmd”参数,而看不到 JSON 数据。

通常,您可以使用 request.getParameter("paramName" 来获取 Servlet 中的 GET 和 POST 参数“) 方法。当 POST 数据被编码为内容类型为“application/x-www-form-urlencoded”的键值对(如标准 HTML 表单中所示)时,这种方法效果很好。

在您的情况下,因为您如果要发送 JSON 数据流,您需要使用自定义解码器来处理可通过 request.getReader() 访问的原始数据流。以下是如何处理 JSON POST 处理的示例:

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...
}
登录后复制

总之,如果您正在处理 JSON POST 数据,则需要使用自定义解码器直接从请求正文处理它,而不是依赖内置的参数枚举机制。

以上是如何使用 HttpServletRequest 检索 JSON POST 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板