Frage

Ich bin ein Java Übriges Web Service zu schreiben und müssen die IP-Adresse des Anrufers. Ich dachte, ich dieses eine Mal im Cookie sah, aber jetzt sehe ich es nicht. Gibt es einen konsistenten Ort, um diese Informationen zu bekommen?

Ich sah ein Beispiel der Verwendung eines „OperationalContext“, um es zu bekommen, aber das war nicht in Java.

War es hilfreich?

Lösung

ich glaube, Sie die IP durch das Request-Objekt erhalten.

Wenn ich mich nicht irre, request.getRemoteAddr() oder so.

Andere Tipps

Inject ein HttpServletRequest in der Ruhe Service wie zum Beispiel:

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

}

Sie können etwas tun:

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

   }
}

Angenommen, Sie Ihre „Web-Service“ mit Servlets machen, die eher einfache Methodenaufruf .getRemoteAddr() auf das Request-Objekt gibt Ihnen die Anrufer IP-Adresse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top