У меня есть 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);
}
}