Anfordern von Daten

Um Anwendungen zu entwickeln, die in der verteilten Betriebssystemumgebung des heutigen Internets ausgeführt werden können, benötigen Sie eine effiziente und einfach zu nutzende Methode für das Abrufen von Daten aus Ressourcen aller Art. Mithilfe austauschbarer Protokolle lassen sich Anwendungen entwickeln, in denen über eine einzige Schnittstelle Daten aus mehreren Internetprotokollen abgerufen werden.

Hochladen und Herunterladen von Daten aus einem Internetserver

Für eine einfache Transaktion mit Anforderung und Antwort lassen sich mit der Klasse WebClient am einfachsten Daten auf einen Internetserver hoch- oder von ihm herunterzuladen. Die Klasse WebClient bietet Methoden für das Hoch- und Herunterladen von Dateien, für das Senden und Empfangen von Streams und für das Senden eines Datenpuffers an den Server und den Empfang einer Antwort. WebClient verwendet die Klassen WebRequest und WebResponse, um die tatsächlichen Verbindungen zu den Internetressourcen herzustellen, damit jedes registrierte, austauschbare Protokoll genutzt werden kann.

Clientanwendungen, für die komplexere Transaktionen ausgeführt werden, fordern Daten mithilfe der Klasse WebRequest und ihren Nachfolgern von den Servern an. WebRequest kapselt die Details zum Aufbau der Serververbindung, zum Senden der Anforderung und zum Empfang der Nachricht ein. WebRequest ist eine abstrakte Klasse, die eine Reihe von Eigenschaften und Methoden definiert. Diese sind für alle Anwendungen verfügbar, die austauschbare Protokolle nutzen. Nachfolger von WebRequest, z.B. HttpWebRequest, implementieren die von WebRequest definierten Eigenschaften und Methoden konsistent zum zu Grunde liegenden Protokoll.

WebRequest erstellt protokollspezifische Instanzen von WebRequest-Nachfolgern. Hierfür wird mit den an die Methode Create übergebenen Werten bestimmt, welche Instanz der abgeleiteten Klasse erstellt werden muss. Anwendungen geben an, welcher WebRequest-Nachfolger verwendet werden sollte, um eine Anforderung zu handeln. Dies geschieht durch die Registrierung des Nachfolgerkonstruktors mithilfe der Methode WebRequest.RegisterPrefix.

Für eine Anforderung an eine Internetressource wird die Methode GetResponse der Klasse WebRequest aufgerufen. Die Methode GetResponse konstruiert die protokollspezifische Anforderung aus den Eigenschaften der WebRequest-Klasse, stellt die TCP- oder UDP-Socketverbindung zum Server her und sendet die Anforderung. Bei Anforderungen, im Rahmen derer Daten an einen Server gesendet werden, z.B. HTTP Post oder FTP Put, stellt die Methode WebRequest.GetRequestStream dafür einen Netzwerkstream bereit.

Die Methode GetResponse gibt eine protokollspezifische WebResponse zurück, die mit WebRequest übereinstimmt.

Die Klasse WebResponse ist ebenfalls eine abstrakte Klasse, die Eigenschaften und Methoden definiert, die für alle Anwendungen mit austauschbaren Protokollen verfügbar sind. WebResponse-Nachfolger implementieren diese Eigenschaften und Methoden für das zu Grunde liegende Protokoll. Beispielsweise implementiert die Klasse HttpWebResponse die WebResponse-Klasse für HTTP.

Die vom Server zurückgegebenen Daten sind für die Anwendung über den von der Methode WebResponse.GetResponseStream zurückgegebenen Stream verfügbar. Wie in den folgenden Beispielen gezeigt, lässt sich dieser Stream wie alle anderen auch verwenden.

StreamReader sr =  
   new StreamReader(resp.GetResponseStream(), Encoding.ASCII);  
Dim sr As StreamReader  
sr = New StreamReader(resp.GetResponseStream(), Encoding.ASCII)  

Siehe auch