feed twitter facebook LinkedIn facebook

Java » Leer una URL con Java

Agosto 27, 2007 por Víctor Cuervo . 20687 visitas 20 Comentarios Imprimir Imprimir

Normalmente, cuando tenemos una URL lo que hacemos es ponerla en un navegador para ver su contenido. Pero hay muchos programas que se dedican a analizar el código fuente de las páginas. Ya sean buscadores, optimizadores de código, validadores,...

En este segundo caso necesitaremos de un código que abra una conexión y examine su código, en vez de mostrarlo por pantalla. En nuestro caso vamos a utilizar el lenguaje Java para llevar a cabo nuestro cometido.

Lo primero es tener una URL. Para ello nos apoyamos en la clase URL, que nos validará si el texto introducido es realmente una URL bien formada (con su protocolo, su nombre de servidor,...)

URL url = new URL("http://www.lineadecodigo.com");

Su por cualquier motivo insertásemos otro texto que no fuese una URL, acabaríamos teniendo una MalformedURLException.

Una vez creado el objeto URL deberemos de abrir un InputStream sobre el para poder leer la información que contiene. Como si fuese cualquier otro origen de datos. En este caso una dirección web.

try {
  // Volcamos lo recibido al buffer
  in = new BufferedReader(new InputStreamReader(url.openStream()));
} catch(Throwable t){}

Este InputStream lo manejaremos con un BufferedReader, el cual nos facilitará en sobre manera la lectura del contenido.

Sobre este BufferedReader iremos leyendo línea por línea mientras que el contenido de lo leído sea diferente de null. Controlaremos de la misma forma que no se produzcan excepciones, IOException.

while ((inputLine = in.readLine()) != null) {
     inputText = inputText + inputLine;
}

El contenido leído lo podemos almacenar en un String que mostraremos posteriormente por pantalla. Al final solo quedará cerrar el stream.

Visualizar el ejemplo | Descargar el código

tags: , , , , , , ,

Artículos relacionados:

20 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

1 2
  1. yanith
    Agosto 29, 2007 #

    HOLA
    si quiero hacer por q a mi no mentra en hi5 yo quiero tener uno de esos muchas gracias
    bye
    besito

  2. Anónimo
    Diciembre 23, 2007 #

    Hay un error en el código.

    try {
    // Volcamos lo recibido al buffer
    in = new BufferedReader(new InputStreamReader(url.openStream()));
    } catch(Throwable t){}

    debería ser

    BufferedReader in = new BufferedReader…

    Gracias.

  3. lineadecodigo
    Diciembre 23, 2007 #

    @anonimo,

    Si y no. Si nos ceñimos a esa parte de código en concreto, efectivamente falta la inicialización de la variable, tal y como dices.

    BufferedReader in = new BufferedReader...

    Y por lo tanto el código de la página induce a error.

    Pero, si te descargas el código, verás que la incialización de la variable está hecha antes de entrar al try-catch. El código es el siguiente:

    // Buffer con los datos recibidos
    BufferedReader in = null;
    
    try {
      // Volcamos lo recibido al buffer
      in = new BufferedReader(new InputStreamReader(
         url.openStream()));
    } catch(Throwable t){}

    Quizás una manía por haberla declarado fuera.

    De todas maneras te agradezco muchísimo tu comentario, ya que me ayudará a mejorar la parte de la explicación y el que no queden lagunas de este estilo.

    Nuevamente, muchas gracias.

  4. Octavio González Rodríguez
    Enero 4, 2008 #

    Hola.

    Y como podria pasar un usuario y contraseña si la URL los requiere?

    En general mi problema es que trato de leer el contenido de una carpeta de windows desde una aplicación J2EE que corre en sun one, leer el contenido y mostrar al usuario que archivos tiene disponibles en esa ruta o carpeta.

    Saludos y muchas gracias.

  5. Raul
    Abril 29, 2008 #

    hola.

    como podria enviar datos al servidor, i por ejemplo cargo una pagina que requiere el envio de datos, por ejemplo una sesion como la manejaria, si esta sesion manejara cookies???

    gracias

  6. lsri8088
    Junio 6, 2008 #

    el codigo fuciona bien pero con una URL me se produce la excepcion IOExcepcion en cuyo mensaje se muestra “Server returned HTTP response code: 500 for URL: http://w….”

    Si lanzo esta URL directamente en el explorador de internert fuciona bien, ¿Porque pasa esto al lanzarla desde Java?

  7. pollo
    Agosto 20, 2008 #

    hola,quien me podria ayudar con el URL para java de treo 600

  8. beltrixx
    Octubre 31, 2008 #

    Gracias por poner este trozo de código, me ha sido de gran utilidad. Yo lo he utilizado para comprobar si existe la URL de la imagen de un empleado (no todos tienen imagen subida) en nuestra intranet. Primero construyo la URL teórica que tendría tener la imagen (http://intranet/ruta_imagenes/num_empleado + .jpg) y luego abro el buffer. Si se produce alguna excepción (al instanciar el objeto URL o bien el BufferReader) considero que no hay imagen.

  9. Alex
    Diciembre 4, 2008 #

    Buenas, me gustaría hacer una consulta.

    Si la URL en concreto está caida el programa queda bloqueado…, hay alguna manera de comprovar que la URL en concreto está UP, para que el programa no se cuelgue?

    Gracias

  10. beltrixx
    Diciembre 5, 2008 #

    ¿Has probado de encerrar el código en un bloque try catch y capturar la excepción? de esa manera el programa no deberia colgarse.

1 2

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*