2010-07-08 19 views
12

Qual è il modo corretto per ottenere il dominio da un URL senza i sottodomini?Ottieni dominio senza sottodominio da un URL

In Java, da una stringa è possibile creare un nuovo URL (urlString) e chiamare getHost() sull'URL, ma si dispone di sottodomini.

Il problema è perché ci possono essere ospiti come: subhost.example.com e subhost.example.co.uk

ci sono molti altri di questi due domini di parte come co.uk (vedi lista su https://wiki.mozilla.org/TLD_List).

Mi sembra che l'unico modo corretto per ottenere solo il dominio sia effettuare una ricerca attraverso l'elenco TLD, rimuovere il TLD dalla fine dell'host e rimuovere tutto prima dell'ultimo periodo nell'host. C'è un metodo esistente che fa questo? Non ne ho visto uno in java.net.URL e ho controllato un po 'di apache commons, ma non sono riuscito a trovarne uno lì.

+0

È possibile trovare informazioni pertinenti in: http://stackoverflow.com/questions/3199343/regex-to-match-domain-cctld –

risposta

12

So che questo è un paio di anni di ritardo, ma se qualcuno si imbatte in questa domanda provare quanto segue:

InternetDomainName.from("subhost.example.co.uk").topPrivateDomain().name 

È possibile che questo tornerà example.co.uk.

+3

Si noti che questa classe si trova nella libreria Google Guava – nerdherd

+2

Grazie per le buone informazioni! Usando Selenium WebDriver che include questa libreria nel vaso autonomo è stato quindi in grado di farvi riferimento. Intendiamoci, ".name" non funzionerà in quanto è una variabile privata. http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/net/InternetDomainName.html – Lukus

+0

@Lukus È corretto. Stavo scrivendo questo in groovy. – Dan

Problemi correlati