Получение тела и кода ответа от HTTPServletResponse - PullRequest
0 голосов
/ 04 октября 2011

Я пытаюсь создать простую систему регистрации, когда наш клиент обращается к API. Мы используем Spring для подключения контроллеров и обработчиков. Я смотрю на функциональность Spring Interceptor, чтобы написать метод postHandle (). К сожалению, в отличие от всех примеров кода, которые я видел здесь, HttpServletResponse не имеет, например, метода getStatus (). Я предполагаю, что мы используем не ту версию Java или что-то в этом роде.

Нам нужны тело и код ответа от объекта HttpServletResponse: как их получить?

РЕДАКТИРОВАТЬ: Мы пошли с фильтром:

public void doFilter(
    ServletRequest request,
    ServletResponse response,
    FilterChain chain) throws IOException, ServletException {

    RichHttpServletResponse richResponse=new RichHttpServletResponse((HttpServletResponse)response);
    chain.doFilter(request, richResponse);
}

RichHttpServletResponse принимает ответ сервлета в качестве аргумента в своем конструкторе и переопределяет некоторые методы, такие как sendError (), и передает значения фактическому ответу сервлета. XML-файл webmvc-config выглядит примерно так:

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
  <sec:filter-chain-map path-type="ant">
    <sec:filter-chain pattern="/**"
      filters="requestObjectFilter" />
  </sec:filter-chain-map>
</bean>

С определением bean-компонента ниже.

1 Ответ

0 голосов
/ 04 октября 2011

Возможно, вы сможете вызвать getOutputStream () и прочитать его, но я буду обеспокоен тем, что это испортит поток. Есть несколько способов сброса, но я не знаком с тем, что они делают сами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...