2009-02-28 13 views

Antwort

47

Verwenden Sie die Klasse System.Net.WebClient.

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

Schön !! :-) +1 von mir! Auf den Punkt! –

+2

Es wäre jedoch synchron. Dies bedeutet, dass nur Daten angezeigt werden, nachdem die gesamte Seite geladen wurde. – configurator

+3

Sexy One Liner ... verkauft! +1 –

19

Ich habe ein Beispiel oben geklopft:

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

Hier ist eine andere Option ist, diesmal die WebClient und tun es asynchron:

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

Die zweite Option, da es praktisch ist, Blockiert den UI-Thread nicht und bietet dadurch eine bessere Erfahrung.

+0

Der UI-Thread? Ist das nicht eine Konsolen-App? –

+1

Ich habe nicht angegeben, dass mein Beispiel ausschließlich der Verwendung mit einer Konsolenanwendung dient. –

+0

Ich stimme zu, aber ich denke, das genaue Beispiel, das du erwähntest, zeigt etwas * falsch * (nur in der Konsolenversion): Drückt man eine Taste, bevor die URL abgerufen wird, wird die Konsole geschlossen, bevor etwas darauf geschrieben wird. Die Änderung des Namens der "Main" -Methode zeigt besser Ihre Absicht. –

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