解决requestWrapper.getBody()取不到值的问题

解决requestWrapper.getBody()取不到值的问题

	@ApiIgnore
    @InvokeLog(name = "editInvoiceTitle", description = "修改发票抬头簿")
    @ResponseBody
    @RequestMapping(value = "/editInvoiceTitle", method = RequestMethod.POST)
    public String editInvoiceTitlesById (HttpServletRequest request,@RequestBody InvoiceTitleReqDto invoiceTitle){
        //校验memberNo与token
        String valMem = messageService.validateMember(request);
        if (StringUtil.isNotEmpty(valMem)) {
            return CommonUtil.getReturn(Constants.MSG_UNAUTHORIZED, SysErrorConsts.PERMISSION_ERROR_CODE, valMem, null);
        }

在validateMember 校验时取不到json对象 原因:HttpServletRequest request 需要引入 javax.servlet.http.HttpServletRequest

 @Override
  public String validateMember(HttpServletRequest httpRequest) {
	String result = "";
	try {
		String method = "GET";
		OtpRequestWrapper requestWrapper = null;
		method = httpRequest.getMethod();
		requestWrapper = new OtpRequestWrapper(httpRequest);

		// 会员相关过滤
		String memberNo = "";
		String token = "";
		String code = "";
		boolean memberFlag = true;
		if ("POST".equals(method)) {
			JSONObject jsonObject = JSONObject.parseObject(requestWrapper.getBody());
			for (String key : jsonObject.keySet()) {
				if ("memberNo".equals(key)) {
					if (jsonObject.get(key) != null) {
						memberNo = jsonObject.get(key).toString();
					}
					break;
				}
			}
			if (StringUtil.isNotEmpty(memberNo)) {
				Cookie[] cookies = requestWrapper.getCookies();
				if (cookies != null) {
					for (Cookie cookie : cookies) {
						String name = cookie.getName();
						String value = cookie.getValue();
						if ("token".equals(name)) {
							token = value;
							break;
						}
					}
				}
			}
		} else {
			memberNo = httpRequest.getParameter("memberNo");
			if (StringUtil.isNotEmpty(memberNo)) {
				Cookie[] cookies = requestWrapper.getCookies();
				for (Cookie cookie : cookies) {
					String name = cookie.getName();
					String value = cookie.getValue();
					if ("token".equals(name)) {
						token = value;
						break;
					}
				}
			}
		}
		if (StringUtil.isNotEmpty(memberNo)) {
			if (StringUtil.isNotEmpty(token)) {
				// 不登陆可以访问的url自动放行
				String memberNoAuthorizationResult = memberNoAuthorization(memberNo, token);
				if (StringUtil.isEmpty(memberNoAuthorizationResult)) {
					log.error("会员鉴权失败");
					memberFlag = false;
				} else {
					JsonObject memberNoAuthorizationJson = new JsonParser().parse(memberNoAuthorizationResult)
							.getAsJsonObject();
					if (CommonConstants.RESPONSE_SUCCESS
							.equals(memberNoAuthorizationJson.get("status").getAsString())) {
						memberFlag = true;
					} else {
						code = memberNoAuthorizationJson.get("code").getAsString();
						memberFlag = false;
					}
				}
			} else {
				memberFlag = false;
				code = "MC90018";
			}
		} else {
			memberFlag = true;
		}
		if (!memberFlag) {
			result = code;
		}
	} catch (Exception e) {
		log.error("会员鉴权失败", e);
		result = String.valueOf(SysErrorConsts.REQUEST_ERROR_CODE);
	}
	return result;
}

debugger调试如图:
在这里插入图片描述

ServletRequest、 HttpServletRequest、Request的联系与区别

  1. HttpServletRequest HttpServletResponse分别是ServletRequest和ServletResponse的之类

  2. HttpServletRequest和ServletRequest都是接口

  3. HttpServletRequest继承自ServletRequest, HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。如getHeader (String name), getMethod () ,getSession () 等等。

    他们对应的实现类:
    javax.servlet.ServletRequestWrapper (implements javax.servlet.ServletRequest)
    javax.servlet.http.HttpServletRequestWrapper (implements javax.servlet.http.HttpServletRequest)

postman中需要用到的添加token的步骤

在这里插入图片描述
注意点:对应的路径下设置对应的token

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值