HttpServlet: извлечь входной запрос json и выходной ответ json

У меня есть служба RESTFul, которую я выставляю через http. Он ожидает ввода Json для запроса POST. Подскажите, пожалуйста, как извлечь ввод Json из объектов HttpServletRequest и HttpServletResponse. Проблема сложная, так как я использую Spring HandlerInterceptorAdapter и у меня нет доступа к входным параметрам и выходным данным оттуда.

Мой код перехватчика ниже:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class MyInterceptor extends HandlerInterceptorAdapter {

  static final Logger logger = LoggerFactory.getLogger(RequestResponseInterceptor.class);

  //before the actual handler will be executed
  public boolean preHandle(HttpServletRequest request,
                           HttpServletResponse response, Object handler)
      throws Exception {

    logRequestPayload(request);

    return true;
  }

  private void logRequestPayload(HttpServletRequest request) {
    JSONObject requestObj = new JSONObject(request.getParameterMap());
    logger.debug("request:" + requestObj);
  }

  //after the handler is executed
  public void postHandle(
      HttpServletRequest request, HttpServletResponse response,
      Object handler, ModelAndView modelAndView)
      throws Exception {

    logResponsePayload(response);

  }

  private void logResponsePayload(HttpServletResponse response) {
    JSONObject responseObj = extractJsonFromResponse(response);
    logger.debug("response:" + response);
  }

  private JSONObject extractJsonFromResponse(HttpServletResponse response) {
    return new JSONObject();
  }
}

Спасибо


person Aspirant    schedule 05.05.2014    source источник
comment
Вы, вероятно, захотите использовать HandlerMethodArgumentResolver, хороший пример можно найти @here stackoverflow.com/questions/12893566/   -  person Devin    schedule 09.07.2020