Reposez - comment obtenir l'adresse IP de l'appelant
-
26-09-2019 - |
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.
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.