2012-12-05 26 views

答えて

4

あなたはGroovyのマジック;-)

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

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

println "IP Address : $ip" 

(要求された通り)出力のダッシュでJavaのURLクラスを使用することができます。

IP Address : 192.168.13.108 
+0

これは 'HTTPのために働くようだ:'、私は 'SSLのためにそれを使用しようとすると::'や 'ftpの' URL私が手: 'キャッチ:java.net.MalformedURLException:不明なプロトコル:ssl' 私はtoURL()メソッドがsslプロトコルのURLを認識するとは思わない。 – cognoscente

4

URLに既にth 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 
関連する問題