Отдых - как получить IP-адрес звонящего - PullRequest
24 голосов
/ 29 сентября 2010

Я пишу Java Rest Web Service и мне нужен IP-адрес звонящего.Я думал, что видел это в печенье один раз, но теперь не вижу.Есть ли единообразное место для получения этой информации?

Я видел один пример использования «OperationalContext» для ее получения, но этого не было в Java.

Ответы [ 4 ]

36 голосов
/ 27 июня 2011

Внедрить HttpServletRequest в вашу Службу отдыха следующим образом:

import javax.servlet.http.HttpServletRequest;

@GET
@Path("/yourservice")
@Produces("text/xml")
public String activate(@Context HttpServletRequest requestContext,@Context SecurityContext context){

   String ipAddressRequestCameFrom = requestContext.getRemoteAddr();

   //Also if security is enabled
   Principal principal = context.getUserPrincipal();
   String userName = principal.getName();

}
14 голосов
/ 29 сентября 2010

Я думаю, вы можете получить IP через объект запроса.

Если я не ошибаюсь, request.getRemoteAddr() или около того.

5 голосов
/ 12 марта 2015

Вы можете сделать что-то вроде этого:

@WebService
public class YourService {

   @Resource
   WebServiceContext webServiceContext; 

   @WebMethod 
   public String myMethod() { 

      MessageContext messageContext = webServiceContext.getMessageContext();
      HttpServletRequest request = (HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST); 
      String callerIpAddress = request.getRemoteAddr();

      System.out.println("Caller IP = " + callerIpAddress); 

   }
}
1 голос
/ 29 сентября 2010

Если вы делаете свой "веб-сервис" с сервлетами, довольно простой вызов метода .getRemoteAddr() для объекта запроса даст вам IP-адрес вызывающего абонента.

...