Obtenir l'adresse IP d'un client Pour un service Web
-
08-07-2019 - |
Question
J'utilise JAX-WS et je ne parviens pas à récupérer les informations client consommant un service Web. J'ai découvert comment le faire avec JAX-RPC et Apache Tomcat Axis, mais pas avec JAX-WS. Quelqu'un a-t-il une idée à ce sujet?
La solution
Qu'en est-il de cela:
@WebService
public class MyService {
@Resource
WebServiceContext wsContext;
/**
* Web service operation
*/
@WebMethod
public String myMethod() {
MessageContext mc = wsContext.getMessageContext();
HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST);
System.out.println("Client IP = " + req.getRemoteAddr());
}
}
Autres conseils
Ou ceci:
@Path("terminal") public class terminal { @Context private javax.servlet.http.HttpServletRequest hsr; @GET @Path("get_ip") @Produces("text/plain") public String get_ip() { return ip = hsr.getRemoteAddr(); } }
Prenant un indice énorme et apprécié de la réponse / modification de Zayin et Darren, j’ai essayé ceci et cela fonctionne aussi.
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("ip")
public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) {
return req.getRemoteAddr();
}
public String getIp(@Context HttpServletRequest req) {
return req.getRemoteHost();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow