Как мне получить доступ к HTTP-запросу? - PullRequest
31 голосов
/ 25 февраля 2011

Скажите нормально, у меня есть метод отдыха в Java

@POST 
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public String showTime(@FormParam("username") String userName) {

:
:
:
}

это нормально, однако мне интересно, есть ли способ получить доступ к полному HTTP-запросу с помощью джерси, например

@POST 
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public String showTime(@FormParam("username") String userName,@XXXXXX String httpRequest) {

:
:
:
}

где некоторая аннотация дала бы мне полный HTTP-запрос на сохранение в переменной. Попытался использовать @POST, но это не похоже на работу. Любые предложения.

Спасибо

Ответы [ 3 ]

51 голосов
/ 25 февраля 2011

Вы можете использовать аннотацию @Context:

@POST 
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public String showTime(
    @FormParam("username") String userName,
    @Context HttpServletRequest httpRequest
) {
    // The method body
}
1 голос
/ 25 сентября 2017

Я написал вспомогательную функцию для решения этой проблемы.Просто извлекает заголовки запроса и помещает их в карту.

private Map<String, String> extractHeaders(HttpServletRequest httpServletRequest) {

    Map<String, String> map = new HashMap<>();
    Enumeration<String> headerNames = httpServletRequest.getHeaderNames();
    while (headerNames.hasMoreElements()) {
        String header = headerNames.nextElement();
        map.put(header, httpServletRequest.getHeader(header));
    }

    return map;
}
0 голосов
/ 25 февраля 2011

Если вы хотите получить тело запроса, вы можете использовать подсказку, приведенную в этом сообщении: Как получить полное тело запроса REST, используя Джерси?

Если вам нужно узнать больше о самом запросе, вы можете попробовать аннотацию @Context, как упомянуто sdorra.

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