Получение HttpServletRequestWrapper в Джерси - PullRequest
2 голосов
/ 16 мая 2011

Я написал HttpServletRequestWrapper с именем HTTPRequest, который читает полное тело HTTP POST для дальнейшего использования.Этот код основан на коде http://natch3z.blogspot.com/2009/01/read-request-body-in-filter.html

Моему серверному приложению на Джерси необходимо получить эту оболочку для чтения тела.К сожалению, я не знаю, как это сделать.

Я пытался поставить

@Context HTTPRequest request;

, но это не работает (отсутствует зависимость для поля).

Я тоже пытался сделать:

@Context HttpServletRequest request;

затем приведение к HTTPRequest, тоже не сработало ($ ProxyXXX не может быть приведено к HTTPRequest).

Я искал информациюИнтернет, но я не могу ничего найти по этому поводу.Любая идея?:)

Спасибо!

1 Ответ

1 голос
/ 16 мая 2011

Я не совсем понимаю: HTTPRequest ваши объекты расширяют HttpServletRequestWrapper, верно?

Поэтому, если вы хотите, чтобы Джерси вводил его с помощью аннотации @Context, вам нужно реализовать ContextResolver. На самом деле в вашем случае это должно быть легко:

@Provider
HTTPRequestContextResolver implements ContextResolver<HTTPRequest> {

@Context HttpServletRequest request;

  HTTPRequest getContext(Class<?> type) {
      return new HTTPRequest(request);
  }
}

Обновлено: Если вы уже завернули исходный запрос в фильтр, у вас могут возникнуть проблемы с его получением, поскольку Джерси упаковывает исходный запрос с использованием динамического прокси.

...