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

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

отсюда ссылке запрос.getRemoteAddr() чтобы использовать это.

но я не могу использовать getRemoteAddr(). Потому что мой запрос и ответ-это формат xml.

Я использовал метод post в службе REST.сервер Tomcat.У меня есть запрос отправки в формате xml.

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

3 ответов


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

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

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

  • пакета javax.с WS.РС.ядро.HttpHeaders,
  • пакета javax.с WS.РС.ядро.UriInfo,
  • пакета javax.с WS.РС.ядро.Запросу
  • javax.сервлет.HttpServletRequest,
  • javax.сервлет.HttpServletResponse,
  • javax.сервлет.ServletConfig,
  • javax.сервлет.ServletContext, и
  • пакета javax.с WS.РС.ядро.Объекты SecurityContext.

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


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