2011-05-16 25 views
8

Estoy tratando de recuperar URL base usando java. He usado el analizador jtidy en mi código para recuperar el título. Estoy obteniendo el título correctamente usando jtidy, pero no obtengo la url base de la URL dada.cómo recuperar url base de la url dada usando java

Tengo algunas URL como entrada:

String s1 = "http://staff.unak.is/andy/GameProgramming0910/new_page_2.htm"; 
String s2 = "http://www.complex.com/pop-culture/2011/04/10-hottest-women-in-fast-and-furious-movies"; 

A partir de la primera cadena, quiero a buscar "http://staff.unak.is/andy/GameProgramming0910/" como una dirección URL base y de la segunda cadena, quiero "http://www.complex.com/" como una dirección URL base.

estoy usando código:

URL url = new URL(s1); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
InputStream in = conn.getInputStream(); 
Document doc = new Tidy().parseDOM(in, null); 
String titleText = doc.getElementsByTagName("title").item(0).getFirstChild() 
.getNodeValue(); 

estoy recibiendo titletext, pero por favor, puedo hacerme saber cómo llegar URL base desde arriba dada URL?

+7

¿Qué reglas se dirá que 'http: // www.complex.com/'es la URL base y no' http: // www.complex.com/pop-culture/2011/04/'? –

Respuesta

18

intenta utilizar la clase java.net.URL, que le ayudará a:

Para el segundo caso, que es más fácil, puede utilizar la nueva dirección URL (s2) .getHost();

Para el primer caso, puede obtener el host y también utilizar el método getFile(), y eliminar la cadena después de la última barra ("/"). algo así como: (código no probado)

URL url = new URL(s1); 
String path = url.getFile().substring(0, url.getFile().lastIndexOf('/')); 
String base = url.getProtocol() + "://" + url.getHost() + path; 
+0

Gracias Pih, me ayudó. – DJ31

+1

He votado, pero me parece que la tercera declaración debe ser: String base = url.getProtocol() + ": //" + url.getHost() + ruta; –

+0

I *** *** piensa que getProtocol URL() devuelve el ": //".., Pero no he probado :( – Pih

0

Utilice la clase java.net.URL para resolver las direcciones URL relativas.

Para el primer caso: la eliminación del nombre de archivo de la ruta:

new URL(new URL(s1), ".").toString() 

Para el segundo caso: el establecimiento de la ruta raíz:

new URL(new URL(s2), "/").toString() 
Cuestiones relacionadas