2016-12-29 2 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アドレスを取得する方法を教えてください。クライアントシステムを取得する方法サーバレット要求のアドレス

+0

ローカルネットワークからサーバーにアクセスしていますか?リモートアクセス(モバイルネットワーク上の電話など)を試みて、それが視点を変えるかどうか確認してください。 – Randy

+0

私は同じことをしましたが、その場合にも私は127.0.0.1を取得しています –

+0

私はネットワークのIPアドレスを取得したいホストアドレスではありません –

答えて

0

あなたはこのようにそれを行うことができます。

@Autowired 
private HttpServletRequest request; 

、その後、ちょうどこのようなあなたのコントローラでそれを使用します:

は、HttpServletRequestをAutowiredにするためには、お使いのコントローラのいずれかの機能が使用可能であることを確認してください

String remoteAddr = request.getRemoteAddr(); 
String localAddres = request.getLocalAddr(); 
関連する問題