C#: Internetseite als String zurückgeben
11 Februar 2010
Öfter habe ich nun schon im Web gelesen, das Beispielcode gesucht wird, wie es in C# möglich ist eine Internetseite als Rückgabewert einer Methode als String zurück zu erhalten. Ich verwende hierbei die Klasse WebRequest für die HTTP Anfrage und den Streamreader zum lesen des Ergebnisses. Folgender, gut kommentierter, Codeschnippsel den ich für ein kleines Projekt erstellt habe sollte dir weiterhelfen:
/* * [url = string] die URL * [buffersize = int] Größe des Zwischenspeichers */ private static string http_get_as_string(string url, int buffersize) { // Initialisiert den Webrequest WebRequest request = WebRequest.Create(url); // Der Anfragentyp. Wir übertragen keine POST Daten request.Method = "GET"; // Sollte keine nach 10000 Millisekunden keine Antwort kommen abbrechen request.Timeout = 10000; // Fehler Abfangen für den Fall das keine Antwort kommt try { // Die Antwort des Webservers erhalten HttpWebResponse response = (HttpWebResponse) request.GetResponse(); // Gibt den Datenstream der Antwort zurück Stream resource = response.GetResponseStream(); // Den Zwischenspeicher erstellen byte[] buffer = new byte[buffersize]; // Hier wird gespeichert wie viel Bytes noch zu lesen sind int toread = 0; // Der Inhalt der Internetseite string content = ""; // Der Einlesevorgang in einer Schleife. Stück für Stück. Solange noch Daten vorhanden sind do { // Lesen aus dem Stream. Maximal die Zwischenspeichergröße auf einmal toread = resource.Read(buffer, 0, buffersize); // Prüft ob noch Daten zum Codieren da sind if (toread != 0) { // Daten UTF-8 codieren content += Encoding.UTF8.GetString(buffer, 0, toread); } } while(toread > 0); return content; } catch (WebException e) { return ""; } }
Die Funktion ermöglicht nicht nur das einlesen von HTML Code sondern ebenso das einlesen von XML, CSS oder Javascript Datein. Kurzum alle Dateien die über HTTP erreichbar sind. Für Fragen steht die Kommentarfunktion zur Verfügung.
Keine Kommentare »
Hinterlasse eine Antwort