Как получить удаленный/клиентский IP-адрес с помощью веб-службы RESTful в java?

Я написал веб-сервис Rest в моем проекте. Вызов веб-службы может поступать с разных компьютеров. Мне нужно узнать IP-адрес через веб-сервис REST.

Из этой ссылки request.getRemoteAddr(), чтобы использовать это.

Но я не могу использовать getRemoteAddr(). Поскольку мой запрос и ответ представляют собой формат xml.

Я использовал метод post в службе REST.Tomcat server.I отправил запрос как XML-формат.

Как я могу получить IP-адрес?

Ответ 1

Предполагая, что вы используете JAX-RS:

@GET
Produces("application/xlm")
public String getData(@Context HttpServletRequest request){
   String ip = request.getRemoteAddr();
}

Аннотация @Context позволяет вводить экземпляры

  • javax.ws.rs.core.HttpHeaders,
  • javax.ws.rs.core.UriInfo,
  • javax.ws.rs.core.Request,
  • javax.servlet.HttpServletRequest,
  • javax.servlet.HttpServletResponse,
  • javax.servlet.ServletConfig,
  • javax.servlet.ServletContext и
  • javax.ws.rs.core.SecurityContext объекты.

Ответ 2

Независимо от формата (или типа содержимого) вашего запроса (в данном случае xml) IP-адрес предоставляется вашим запросом, через который отправляется полезная нагрузка (запрос) xml. Следовательно, наилучшим способом проверить ваш запрос.

Ответ 3

Даже если ваш запрос находится в формате xml/json, вы получите адрес удаленной/клиентской машины с помощью request.getRemoteAddr();, потому что IP-адрес находится в заголовок HTTP-запроса.