java - 如何通过java中的rest服务获取用户ip
问题描述
嘿,伙计们,我在这里有一个小问题,在我的应用程序中,由于此实现,我设法获取用户 ip如何在 Primefaces Gmap 上标记用户的当前位置?它工作正常继承人我如何实现它:
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
解决方案
推荐阅读
- ios - 更改 Touch ID 对话框原因
- scala - 不受支持的数据库上的 Slick 3.2.x
- node.js - 我无法正常工作 webpack
- python - 从 bash 导出一个变量并在 Python 中使用它
- html - 当屏幕较小时,bootstrap col 彼此相邻调整大小
- java - 将字符串中的运算符更改为相反的最佳方法
- c# - 如何在 Azure 存储(不是 Blob 存储)中重命名文件/目录(不是 Blob 文件)?
- vba - ws.Shapes 语句中每个 sh 的越界错误
- javascript - Firebase Firestore 云功能从不执行
- c - 打印字符串给出字节 C