rest – 如何获取呼叫者的IP地址

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

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

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

如果我没弄错的话, request.getRemoteAddr()左右。

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

你可以这样做:

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

假设您正在使用servlet创建“Web服务”,请求对象上相当简单的方法调用.getRemoteAddr()将为您提供调用者IP地址。