2010-07-08 21 views
12

¿Cuál es la forma correcta para conseguir el dominio de una URL sin los subdominios?Obtener dominio sin subdominio de un URL

En Java, a partir de una cadena que se puede hacer una nueva dirección URL (urlString) y llamar a getHost() en la URL, pero usted tiene subdominios con él.

El problema es porque no puede haber anfitriones como: subhost.example.com y subhost.example.co.uk

Hay varios otros de estos dos dominios parte como co.uk (ver la lista en https://wiki.mozilla.org/TLD_List).

Me parece que la única forma correcta de obtener solo el dominio es hacer una búsqueda a través de la lista de TLD, eliminar el TLD del final del host y quitar todo antes del último período en el host. ¿Hay un método existente que hace esto? No vi uno en java.net.URL y revisé Apache commons un poco, pero no pude encontrar uno allí.

+0

Puede encontrar información relevante en: http://stackoverflow.com/questions/3199343/regex-to-match-domain-cctld –

Respuesta

12

Sé que esto es un par de años de retraso, pero si alguien se tropieza con esta pregunta pruebe lo siguiente:

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

El anterior devolverá example.co.uk.

+3

Tenga en cuenta que esta clase se encuentra en la biblioteca de Google Guava – nerdherd

+2

¡Gracias por la buena información! El uso de Selenium WebDriver, que incluye esta biblioteca en el contenedor independiente, fue capaz de hacer referencia a él. Eso sí, ".name" no funcionará ya que es una variable privada. http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/net/InternetDomainName.html – Lukus

+0

@Lukus Eso es correcto. Estaba escribiendo esto en groovy. – Dan

Cuestiones relacionadas