2009-02-28 2 views

risposta

47

Utilizzare la classe System.Net.WebClient.

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

Bello !! :-) +1 da me! Dritto al punto! –

+2

Sarebbe sincrono, comunque. Significa che mostrerà solo i dati dopo che l'intera pagina è stata caricata. – configurator

+3

Sexy one liner ... venduto! +1 –

19

Ho messo incinta un esempio:

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(); 

Qui è un'altra opzione, utilizzando il WebClient questo tempo e farlo in modo asincrono:

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 seconda opzione è utile in quanto non bloccherà il thread dell'interfaccia utente, dando una migliore esperienza.

+0

Il thread dell'interfaccia utente? Non è un'app per console? –

+1

Non ho specificato che il mio esempio fosse ai soli fini di utilizzo con un'applicazione console. –

+0

Sono d'accordo ma penso che l'esatto esempio che hai citato dimostri qualcosa di specifico * errato * (solo in versione console): premendo un tasto prima che venga recuperato l'URL, la console viene chiusa prima di scrivere qualcosa. Cambiare il nome del metodo 'Main' dimostra meglio la tua intenzione. –

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");