2012-12-05 8 views

risposta

4

È possibile utilizzare classe URL di Java con un pizzico di magia Groovy ;-)

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

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

println "IP Address : $ip" 

che (come richiesto): uscite

IP Address : 192.168.13.108 
+0

Questo sembra funzionare per 'http:' o 'ftp:', ma quando cerco di usarlo per un 'SSL:' url ottengo: ' Caught: java.net.MalformedURLException: unknown protocol: ssl' Non penso che il metodo toURL() riconosca gli URL del protocollo SSL. – cognoscente

4

Se l'URL ha già L'indirizzo IP che quindi converte in un URL funziona per estrarre l'IP ma se un nome host di dominio (ad es. www.stackoverflow.com) si trova nel componente host URL quindi è necessario eseguire una ricerca DNS che si risolve in un indirizzo. Ciò richiede una chiamata a InetAddress.getByName() nell'API Java.

Se l'URL ha già l'indirizzo, quindi InetAddress.getByName() restituirà semplicemente l'indirizzo così com'è. Inoltre, è necessario indirizzare la gestione delle eccezioni se il nome host non può essere risolto in un indirizzo.

 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" 

uscita:

IP Address : 69.59.197.21