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地址。