2016-12-29 152 views
1
@GET 
     @Produces(MediaType.APPLICATION_JSON) 
     public Response login(@Context HttpHeaders headers, @Context HttpServletRequest request) { 
      System.out.println(getClientIpAddress(request)); 
      String ipAddress = request.getHeader("X-FORWARDED-FOR"); 
      if (ipAddress == null) { 
       ipAddress = request.getRemoteAddr(); 
      } 
      System.out.println("ip:" + ipAddress); 
      return new LoginUtils().performLogin(headers.getRequestHeaders()); 
     } 

    public static String getClientIpAddress(HttpServletRequest request) { 
      for (String header : HEADERS_TO_TRY) { 
       String ip = request.getHeader(header); 
       if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) { 
        return ip; 
       } 
      } 
      return request.getRemoteAddr(); 
     } 

,但我沒有獲取IP地址,我得到相同127.0.0.1這個值從每個請求不同的系統可以請告訴我如何獲得IP地址。如何獲得客戶端系統的IP地址,Serverlet要求

+0

您是否從本地網絡訪問服務器?嘗試遠程訪問它(移動網絡上的電話或其他),看看是否改變了觀點。 – Randy

+0

我也做了同樣的事情,但在這種情況下,我也越來越127.0.0.1 –

+0

我想要網絡IP地址不主機地址 –

回答

0

你可以這樣說:

讓HttpServletRequest的自動裝配Autowired要提出的是在控制器中的任何功能可用:

@Autowired 
private HttpServletRequest request; 

,然後只用它在你的控制器是這樣的:

String remoteAddr = request.getRemoteAddr(); 
String localAddres = request.getLocalAddr();