2012-12-05 125 views

回答

4

您可以使用Java的URL類的Groovy的魔術;-)

String getAddressFromString(String url) { 
    url.toURL().host 
} 

String ip = getAddressFromString('ftp://192.168.13.108/720_prev') 

println "IP Address : $ip" 

它(的要求)輸出破折號:

IP Address : 192.168.13.108 
+0

這似乎爲'HTTP工作:'或'FTP:',但是當我嘗試使用它的'SSL:'網址獲得: '捕獲:java.net.MalformedURLException:未知協議:ssl' 我不認爲toURL()方法識別ssl協議URL。 – cognoscente

4

如果該URL已經有第e IP地址然後轉換爲URL可以提取IP,但是如果域名主機名(例如, www.stackoverflow.com)在URL主機組件中找到,則需要執行解析爲地址的DNS查找。這需要在Java API中調用InetAddress.getByName()

如果URL已經有地址,那麼InetAddress.getByName()將只是原樣返回地址。另外,如果主機名無法解析爲地址,則需要處理異常。

 String getAddressFromString(String url) 
     throws MalformedURLException, UnknownHostException 
     { 
      String host = url.toURL().host 
      // this would be equivalent to calling new URL(url).getHost() 
      return InetAddress.getByName(host).getHostAddress() 
     } 

     String ip = getAddressFromString("http://stackoverflow.com/") 
     println "IP Address : $ip" 

輸出:

IP Address : 69.59.197.21