Come recuperare una pagina Web e diplay l'html sulla console con C#?Come recuperare una pagina Web con C#?
risposta
Utilizzare la classe System.Net.WebClient
.
System.Console.WriteLine(new System.Net.WebClient().DownloadString(url));
Bello !! :-) +1 da me! Dritto al punto! –
Sarebbe sincrono, comunque. Significa che mostrerà solo i dati dopo che l'intera pagina è stata caricata. – configurator
Sexy one liner ... venduto! +1 –
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.
Il thread dell'interfaccia utente? Non è un'app per console? –
Non ho specificato che il mio esempio fosse ai soli fini di utilizzo con un'applicazione console. –
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. –
// 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");
Proprio quello che volevo chiedere :) –