休息 - 如何获取呼叫者的IP地址

Wan*_*rer 25 java rest web-services restful-authentication jax-rs

我正在编写Java Rest Web服务并需要调用者的IP地址.我以为我曾经在cookie中看到过这个,但现在我没有看到它.是否有一致的地方获取此信息?

我看到了一个使用"OperationalContext"来获取它的例子,但这不是在java中.

rjd*_*olb 39

HttpServletRequest注入到Rest服务中:

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

}
Run Code Online (Sandbox Code Playgroud)

  • `requestContext.getRemoteAddr()`就足够了(没有`toString()`) (3认同)

kuk*_*das 16

我想你可以通过请求对象获取IP.

如果我没有弄错,request.getRemoteAddr()那么.

  • 嗯..你不能做像@Context HttpServletRequest请求,然后使用这个对象request.getRemoteAddr()吗? (4认同)

小智 5

您可以执行以下操作:

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

   }
}
Run Code Online (Sandbox Code Playgroud)