Jeśli adres URL już ma Adres IP, który następnie konwertuje na adres URL, działa w celu wyodrębnienia adresu IP, ale jeśli nazwa hosta domeny (np. www.stackoverflow.com) znajduje się w komponencie hosta URL, a następnie trzeba wykonać wyszukiwanie DNS, które rozwiązuje się na adres. Wymaga to połączenia z InetAddress.getByName() w Java API.
Jeśli adres URL ma już adres, wówczas InetAddress.getByName() po prostu zwróci adres w niezmienionej postaci. Ponadto należy zająć się obsługą wyjątków, jeśli nazwa hosta nie może zostać przetłumaczona na adres.
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"
wyjściowa:
IP Address : 69.59.197.21
To wydaje się działać dla 'http:' lub 'ftp:', ale gdy próbuję użyć go na 'SSL:' url uzyskać: ' Złapany: java.net.MalformedURLException: unknown protocol: ssl' Nie sądzę, że metoda toURL() rozpoznaje adresy URL protokołów ssl. – cognoscente