如何通过Java中的Rest Service获取用户IP

时间:2019-07-03 15:28:51

标签: java rest postman

嘿,我在这里有一个小问题,在此应用程序中,我通过how to mark user's current location on Primefaces Gmap?的使用设法使用户获得IP地址。在这里,我的实现方法很好:

FacesContext context = FacesContext.getCurrentInstance();
ExternalContext externalContext =  context.getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String ip = request.getRemoteAddr();
System.out.println("ip: " + ip);

问题在于,现在我需要做同样的事情,但是在休息服务中,但是在休息服务中,我无法获得FacesContext,所以我无法获得ExternalContext,因此继续...您知道如何通过休息服务实现相同目标吗?我尝试了这个: Accessing FacesContext from Web Service 但是没有运气,这就是我目前正在使用POSTMAN测试服务的内容:

@POST
@Path("/test")
public void test() {
        ServletContext servletContext = (ServletContext) context;
        HttpServletRequest request = (HttpServletRequest) servletContext;
        String ip = request.getRemoteAddr();
        System.out.println("ip: " + ip);
    }

这是我声明上下文变量的方式:

@Resource
WebServiceContext context;

第二个代码未通过HttpServletRequest request = (HttpServletRequest) servletContext;,它给了我错误

Caused by: java.lang.ClassCastException: org.jboss.ws.common.injection.ThreadLocalAwareWebServiceContext cannot be cast to javax.servlet.ServletContext

0 个答案:

没有答案