Spring Framework HandleInterceptor не обрабатывает тело x- www-urlencoded - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть API, который использует x- www-urlencoded в качестве тела. перед входом в API я реализовал HandlerInterceptor для проверки переменных заголовка. мой API - это один из URL, которые не нужно перехватывать с помощью HandlerInterceptor .. в API отсутствует тело x- www-urlencoded .. что-то не так с моим кодом?

вот мой код:

ServiceInterceptor. java

public class ServiceInterceptor implements HandlerInterceptor {
    static Gson gson = new Gson();

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    String authorization = request.getHeader("Authorization");
    String key = request.getHeader("Key");
    String timestamp = request.getHeader("Timestamp");
    String signature = request.getHeader("Signature");
    String apiMethod = request.getMethod();
    String jsonIn = IOUtils.toString(request.getReader());
    String url = request.getRequestURI().replace(request.getContextPath(), "");

    if (url.equals("/get-token")) {
        return true;
    } else {
        model.mdlErrorSchema mdlAPIStatus = AuthorizationAdapter.CheckAuthorization(authorization, key, timestamp, signature, response, jsonIn, apiMethod, url);

        if (mdlAPIStatus.error_code.equals("ERR-00-000")) {
        return true; // continue processing
        } else {
        response.getWriter().write(gson.toJson(mdlAPIStatus));
        response.setContentType("text/json");
        response.setCharacterEncoding("UTF-8");
        response.setStatus(400);
        return false;
        }
    }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    // TODO Auto-generated method stub

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    // TODO Auto-generated method stub

    }
}

Это мой код для API

@RequestMapping(value = "/get-token", method = RequestMethod.POST, consumes = "application/x-www-form-urlencoded")
    public @ResponseBody model.mdlAPIObjectResult GetToken(@RequestHeader("Authorization") String authorization, @RequestHeader("Content-Type") String contentType, @RequestParam(value = "grant_type", defaultValue = "") String grantType, HttpServletResponse response) {

    if (!grantType.equals("client_credentials")) {
    mdlAPIResult.error_schema = ErrorAdapter.GetErrorSchema(ErrorStatus.ERR_99_003);
    response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    return mdlAPIResult;
    } else {
        response.setStatus(HttpServletResponse.SC_OK);
    }
}
...