如何使用Java中的RESTful Web服务获取远程/客户端IP地址?

我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。

从这个链接请求.getRemoteAddr()使用这个。

但是我不能使用getRemoteAddr()。因为我的请求和响应是xml格式。

我在 REST 服务中使用了 post 方法。雄猫服务器。我以xml格式发送请求。

如何获取 IP 地址?


答案 1

假设您正在使用 JAX-RS:

@GET
Produces("application/xlm")
public String getData(@Context HttpServletRequest request){
   String ip = request.getRemoteAddr();
}

注释允许您注入@Context

  • javax.ws.rs.core.HttpHeaders,
  • javax.ws.rs.core.UriInfo,
  • javax.ws.rs.core.Request,
  • javax.servlet.HttpServletRequest,
  • javax.servlet.HttpServletResponse,
  • javax.servlet.ServletConfig,
  • javax.servlet.ServletContext, and
  • javax.ws.rs.core.SecurityContext objects.

答案 2

无论您的请求的格式(或内容类型)如何(在本例中为 xml),IP 地址都随请求一起提供,通过该请求提交 xml 有效负载(请求)。因此,检查您的请求是最好的方法。