Java Restlet查找源IP

Java Restlet查找源IP,java,restlet,Java,Restlet,我想找出请求来自我的资源的源IP地址。 我有下面两种方法来检索它 String ipAddress = (Series) Request.getCurrent().getAttributes(). get("org.restlet.http.headers").getFirstValue("X-Forwarded-For"); String ip = ipAddress.split(" ")[0]; 及 List ipsList=Request.getC

我想找出请求来自我的资源的源IP地址。 我有下面两种方法来检索它

String ipAddress = (Series) Request.getCurrent().getAttributes().
                    get("org.restlet.http.headers").getFirstValue("X-Forwarded-For");
String ip = ipAddress.split(" ")[0];

List ipsList=Request.getCurrent().getClientInfo().getForwardedAddresses();
字符串ip=ipsList.get(ipsList.size()-1);
两个问题:

  • 它们都是正确的吗
  • 哪一个更好(如果两者都有效,在效率/资源/运行时间方面,哪一个更好)

  • 你需要告诉我们你所说的“正确”和“更好”是什么意思。更好-如果它们都能工作,那么在效率/资源/运行时方面哪一个更好我认为最好使用restletapi而不是头的值。Restlet从头文件中提取这样的提示,并允许您通过API访问它。因此,在您的情况下,我更喜欢第二种方法;-)希望它能帮助你!我也倾向于第二个。然而,我不能100%确定它是否有效。默认情况下,此功能未启用。请参阅类的javadocs
    ClientInfo
    。如果在独立模式下使用Restlet,则可以执行以下操作:
    server.getContext().getParameters().add(“useForwardedForHeader”,“true”)(请参阅)。希望能有帮助
    
    List<String> ipsList = Request.getCurrent().getClientInfo().getForwardedAddresses();
    String ip = ipsList.get(ipsList.size() - 1);