viernes, 18 de abril de 2014

Programación de Red - JAVA ( 2. Leyendo desde una URL : Hora de conectar y leer de Internet )

Contenidos:

  1. Introducción: Como funciona la comunicación en red.
  2. Leyendo desde una URL : Hora de conectar y leer de Internet.
  3. Programar Java para conectar a servidores proxy HTTP.
  4. A descargar contenido de Internet.
  5. Cotización en bolsa: Un programa aplicando lo aprendido.
  6. Programación de sockets: Más allá de los protocolos estándar.

2. Leyendo desde una URL : Hora de conectar y leer de Internet.


Al igual que cuando leemos flujos de archivos locales; lo mismo sucede en la lectura de archivos remoto, la única diferencia es que el flujo se abre en la red. En Java la clase java.net.URL nos permite conectarse a un equipo remoto en Internet y acceder a recurso; siempre y cuando no esté protegido al público.
Se genera MalformedURLException si se especifica una URL incorrecta, por ejemplo si se escribe htp en lugar de http o añade espacios sobrantes. Si se genera MalformedURLException, no indica que el equipo remoto tiene problemas: comprueba la ortografía de la URL La creación del objeto URL no establece una conexión con el equipo remoto; tendrá que abrir un flujo y leerlo. Estos son los pasos a seguir:

  1. Cree una instancia de la clase URL.
  2. Cree una instancia de la clase URLConnection y abra una conexión por medio de la URL del paso 1.
  3. Obtenga una referencia a un flujo de entrada de este objeto mediante la invocación del método URConnection.getInputStream().
  4. Lea los datos desde el flujo. Use un lector en búfer para acelerar el proceso.

A continuación os dejo la clase LectorWebSite que lee el contenido de index.html de google.com:


package com.pelusadev.programacionenlared;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

/**
 *
 * @author pelusadev
 */
public class LectorWebSite {
    
    public static void main(String[] args) {
        
        String nextLine;
        URL url = null;
        URLConnection urlConn = null;
        
        InputStreamReader inStream = null;
        BufferedReader buff = null;
        
        try{
            // index.html es un nombre de archivo predeterminado de una URL
            url = new URL("http://www.google.com");
            urlConn = url.openConnection();
            
            inStream = new InputStreamReader(urlConn.getInputStream(),"UTF-8");
            
            buff = new BufferedReader(inStream);
            
            // Leer e imprimir las líneas de index.html
            while(true)
            {
                nextLine = buff.readLine();
                if(nextLine != null)
                {
                    System.out.println(nextLine);
                }else{
                    break;
                }
            }
        }catch(MalformedURLException e){
          System.err.println("Por favor chequea la URL: " + e.toString());
        }catch(IOException e){ 
          System.err.println("No se puede leer desde Internet: " + e.toString());
        }finally{
         if(inStream != null)
         {
          try{
             inStream.close();
             buff.close();
          }catch(IOException e){
           System.err.println("No se puede cerrar los streams: " + e.toString());
          }
         }
       }
    }    
}

Y este es el resulado mostrado en NetBeans:

No hay comentarios:

Publicar un comentario