2009-02-28 21 views

Respuesta

47

Usa la clase System.Net.WebClient.

System.Console.WriteLine(new System.Net.WebClient().DownloadString(url)); 
+2

Nice !! :-) ¡+1 de mí! ¡Directo al grano! –

+2

Sin embargo, sería sincrónico. Lo que significa que solo mostrará datos una vez que se haya cargado toda la página. – configurator

+3

Sexy one liner ... vendido! +1 –

19

He llamado a un ejemplo:

WebRequest r = WebRequest.Create("http://www.msn.com"); 
WebResponse resp = r.GetResponse(); 
using (StreamReader sr = new StreamReader(resp.GetResponseStream())) 
{ 
    Console.WriteLine(sr.ReadToEnd()); 
} 

Console.ReadKey(); 

Aquí es otra opción, usando el cliente Web este tiempo y hacerlo de forma asíncrona:

static void Main(string[] args) 
{ 
    System.Net.WebClient c = new WebClient(); 
    c.DownloadDataCompleted += 
     new DownloadDataCompletedEventHandler(c_DownloadDataCompleted); 
    c.DownloadDataAsync(new Uri("http://www.msn.com")); 

    Console.ReadKey(); 
} 

static void c_DownloadDataCompleted(object sender, 
            DownloadDataCompletedEventArgs e) 
{ 
    Console.WriteLine(Encoding.ASCII.GetString(e.Result)); 
} 

La segunda opción es práctico, ya que no bloqueará el subproceso UI, dando una mejor experiencia.

+0

¿El subproceso de interfaz de usuario? ¿No es esta una aplicación de consola? –

+1

No especifiqué que mi ejemplo tenía el único propósito de usarlo con una aplicación de consola. –

+0

Acepto, pero creo que el ejemplo exacto que mencionaste demuestra algo específicamente * wrong * (solo en la versión de consola): presionar una tecla antes de que se busque la URL hace que la consola se cierre antes de que se escriba nada. Cambiar el nombre del método 'Principal' demuestra mejor su intención. –

5
// Save HTML code to a local file. 
WebClient client = new WebClient(); 
client.DownloadFile("http://yoursite.com/page.html", @"C:\htmlFile.html"); 

// Without saving it. 
string htmlCode = client.DownloadString("http://yoursite.com/page.html"); 
Cuestiones relacionadas