web-dev-qa-db-fra.com

Reste - comment obtenir l'adresse IP de l'appelant

J'écris un Java Rest Web Service et j'ai besoin de l'adresse IP de l'appelant. Je pensais l'avoir vu dans le cookie une fois mais maintenant je ne le vois pas. Existe-t-il un endroit cohérent pour l'obtenir? information?

J'ai vu un exemple d'utilisation d'un "OperationalContext" pour l'obtenir, mais ce n'était pas en Java.

25
Wanderer

Je pense que vous pouvez obtenir l'IP via l'objet de demande.

Si je ne me trompe pas, request.getRemoteAddr() ou plus.

16
kukudas

Injectez un HttpServletRequest dans votre service de repos en tant que tel:

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();

}
39
rjdkolb

Vous pouvez faire quelque chose comme ça:

@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); 

   }
}
5
Diogo Valim

En supposant que vous effectuez votre "service Web" avec des servlets, la méthode assez simple appelez .getRemoteAddr() sur l'objet de requête vous donnera l'adresse IP des appelants.

1
Michael Banzon