【问题标题】:Reading parameters from request body从请求正文中读取参数
【发布时间】:2016-07-21 09:14:08
【问题描述】:

我有以下请求正文。

BODY:代码= 471b001b-432f-3172-b59f-2b03c7847cf6&client_secret = AtO0zxf62KoYasYTobOGRXVRZXsa&grant_type = authorization_code&CLIENT_ID = 4rYClwGnY4CE_XXAkMCoWuI4mnIa&REDIRECT_URI = HTTPS%3A%2F%2Fop.certification.openid.net%3A60746%2Fauthz_cb P>

我需要从请求正文中读取 client_secret 参数。我正在使用下面的代码来读取请求正文。

Scanner scanner = null;
        try {
            scanner = new Scanner(request.getInputStream());
        } catch (IOException e) {

        }
        while (scanner.hasNextLine()) {
            stringBuilder.append(scanner.nextLine());
        }
        String requestBody = stringBuilder.toString();

我可以创建一个逻辑来从 requestBody 字符串中获取 client_secret 参数的值。但我需要知道我们是否有直接的方法从 HTTPRequest 正文中读取参数。

任何建议都将受到高度赞赏。

谢谢。

【问题讨论】:

  • 为什么不用request.getParameter("client_secret")?
  • 这是请求正文而不是 url。所以我们不能使用它
  • request.getParameter 为您提供来自 post 的数据以及获取请求。

标签: java httprequest


【解决方案1】:

ServletRequest(以及扩展的 HttpServletRequest)(1) 对象具有获取请求参数的内置支持。

您可以通过使用获取特定参数:

String paramValue = request.getParameter('parameterName');

返回类型将始终为String。 请注意,此方法也适用于 GET 请求(现在我猜您正在处理 POST 请求,因为参数在请求的正文中)。

您还可以查看getParameterMapgetParameterValuesgetParameterNames,看看是否有用。

HttpServletRequest Javadoc: http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletRequest.html

ServletRequest Javadoc: http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html

(1) : 我假设这是你的对象的类型,根据getInputStream(),如果我错了,请纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2023-04-07
    • 2020-07-23
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多