我有以下请求正文。
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
我需要从请求正文中读取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 String中获取client_secret参数的值。但我需要知道我们是否有直接从HTTPRequest Body读取参数的方法。
任何建议都将受到高度赞赏。
感谢。
答案 0 :(得分:1)
ServletRequest(以及扩展名,HttpServletRequest)(1)对象具有内置支持以获取请求的参数。
您可以使用以下方式获取特定参数:
String paramValue = request.getParameter('parameterName');
返回类型始终为String
。
请注意,此方法也适用于GET请求(现在我猜你正在处理POST请求,因为参数在请求的主体内)。
您还可以查看getParameterMap
,getParameterValues
和getParameterNames
,看看是否可以使用。
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()
,如果我错了,请纠正我。