代码之家  ›  专栏  ›  技术社区  ›  monksy

获取Web服务的客户端的IP地址

  •  20
  • monksy  · 技术社区  · 15 年前

    我使用的是JAX-WS,检索使用WebService的客户机信息时遇到问题。我已经了解了如何使用JAX-RPC和ApacheTomcat轴来完成它,但不使用JAX-WS。有人知道这个吗?

    4 回复  |  直到 6 年前
        1
  •  47
  •   Pascal Thivent    15 年前

    这个怎么样:

    @WebService
    public class MyService {
    
      @Resource
      WebServiceContext wsContext; 
    
      /**
       * Web service operation
       */ 
      @WebMethod 
      public String myMethod() { 
    
        MessageContext mc = wsContext.getMessageContext();
        HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST); 
        System.out.println("Client IP = " + req.getRemoteAddr()); 
    
      }
    
    } 
    
        2
  •  4
  •   Darren    12 年前

    或者:

    @Path("terminal")
    public class terminal {
        @Context private javax.servlet.http.HttpServletRequest hsr;
        @GET
        @Path("get_ip")
        @Produces("text/plain")
        public String get_ip()
        {
                return ip = hsr.getRemoteAddr();
        }
    }
    
        3
  •  3
  •   Richard    12 年前

    我从扎印和达伦的回答/编辑中得到了一个巨大的、令人赞赏的提示,我尝试了这个方法,它也很有效。

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("ip")
    public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) {
        return req.getRemoteAddr();
    }
    
        4
  •  0
  •   N K    11 年前
    public String getIp(@Context HttpServletRequest req) {
        return req.getRemoteHost();
    }