Как получить доступ к HTTP-запросу?
Скажем, что у меня есть метод rest в 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, но он, похоже, не работает. Любые предложения.
Спасибо
Ответы
Ответ 1
Вы можете использовать аннотацию @Context:
@POST
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public String showTime(
@FormParam("username") String userName,
@Context HttpServletRequest httpRequest
) {
// The method body
}
Ответ 2
Если вы хотите получить тело запроса, вы можете использовать подсказку, выровненную в этом сообщении: Как получить полный орган запроса REST с помощью Джерси?
Если вам нужно больше узнать о самом запросе, вы можете попробовать аннотацию @Context, как упомянуто sdorra.
Ответ 3
Я написал вспомогательную функцию для решения этой проблемы. Просто извлекает заголовки запросов и помещает их на карту.
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;
}