Question

Je suis en train d'écrire un service Web Java Rest et besoin de l'adresse IP de l'appelant. Je pensais que je voyais cela dans le cookie une fois, mais maintenant, je ne le vois pas. Y at-il un endroit cohérent pour obtenir cette information?

J'ai vu un exemple d'utiliser un « OperationalContext » pour l'obtenir, mais cela n'a pas été en java.

Était-ce utile?

La solution

Je pense que vous pouvez obtenir l'adresse IP à travers l'objet de la demande.

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

Autres conseils

HttpServletRequest dans votre repos service 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();

}

Vous pouvez faire quelque chose comme ceci:

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

   }
}

En supposant que vous faites votre « service web » avec servlets, le .getRemoteAddr() d'appel de méthode assez simple sur l'objet de la demande vous donnera les appelants adresse IP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top