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.
Je pense que vous pouvez obtenir l'IP via l'objet de demande.
Si je ne me trompe pas, request.getRemoteAddr()
ou plus.
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();
}
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);
}
}
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.