Anfordern von DatenRequesting Data

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.Developing applications that run in the distributed operating environment of today's Internet requires an efficient, easy-to-use method for retrieving data from resources of all types. Mithilfe austauschbarer Protokolle lassen sich Anwendungen entwickeln, in denen über eine einzige Schnittstelle Daten aus mehreren Internetprotokollen abgerufen werden.Pluggable protocols let you develop applications that use a single interface to retrieve data from multiple Internet protocols.

Hochladen und Herunterladen von Daten aus einem InternetserverUploading and Downloading Data from an Internet Server

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.For simple request and response transactions, the WebClient class provides the easiest method for uploading data to or downloading data from an Internet server. 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 provides methods for uploading and downloading files, sending and receiving streams, and sending a data buffer to the server and receiving a response. WebClient verwendet die Klassen WebRequest und WebResponse, um die tatsächlichen Verbindungen zu den Internetressourcen herzustellen, damit jedes registrierte, austauschbare Protokoll genutzt werden kann.WebClient uses the WebRequest and WebResponse classes to make the actual connections to the Internet resource, so any registered pluggable protocol is available for use.

Clientanwendungen, für die komplexere Transaktionen ausgeführt werden, fordern Daten mithilfe der Klasse WebRequest und ihren Nachfolgern von den Servern an.Client applications that need to make more complex transactions request data from servers using the WebRequest class and its descendants. WebRequest kapselt die Details zum Aufbau der Serververbindung, zum Senden der Anforderung und zum Empfang der Nachricht ein.WebRequest encapsulates the details of connecting to the server, sending the request, and receiving the response. 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.WebRequest is an abstract class that defines a set of properties and methods that are available to all applications that use pluggable protocols. Nachfolger von WebRequest, z.B. HttpWebRequest, implementieren die von WebRequest definierten Eigenschaften und Methoden konsistent zum zu Grunde liegenden Protokoll.Descendants of WebRequest, such as HttpWebRequest, implement the properties and methods defined by WebRequest in a way that is consistent with the underlying protocol.

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.The WebRequest class creates protocol-specific instances of WebRequest descendants, using the value of the URI passed to its Create method to determine the specific derived-class instance to create. 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.Applications indicate which WebRequest descendant should be used to handle a request by registering the descendant's constructor with the WebRequest.RegisterPrefix method.

Für eine Anforderung an eine Internetressource wird die Methode GetResponse der Klasse WebRequest aufgerufen.A request is made to the Internet resource by calling the GetResponse method on the WebRequest. 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.The GetResponse method constructs the protocol-specific request from the properties of the WebRequest, makes the TCP or UDP socket connection to the server, and sends the request. 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.For requests that send data to the server, such as HTTP Post or FTP Put requests, the WebRequest.GetRequestStream method provides a network stream in which to send the data.

Die Methode GetResponse gibt eine protokollspezifische WebResponse zurück, die mit WebRequest übereinstimmt.The GetResponse method returns a protocol-specific WebResponse that matches the WebRequest.

Die Klasse WebResponse ist ebenfalls eine abstrakte Klasse, die Eigenschaften und Methoden definiert, die für alle Anwendungen mit austauschbaren Protokollen verfügbar sind.The WebResponse class is also an abstract class that defines properties and methods that are available to all applications that use pluggable protocols. WebResponse-Nachfolger implementieren diese Eigenschaften und Methoden für das zu Grunde liegende Protokoll.WebResponse descendants implement these properties and methods for the underlying protocol. Beispielsweise implementiert die Klasse HttpWebResponse die WebResponse-Klasse für HTTP.The HttpWebResponse class, for example, implements the WebResponse class for HTTP.

Die vom Server zurückgegebenen Daten sind für die Anwendung über den von der Methode WebResponse.GetResponseStream zurückgegebenen Stream verfügbar.The data returned by the server is presented to the application in the stream returned by the WebResponse.GetResponseStream method. Wie in den folgenden Beispielen gezeigt, lässt sich dieser Stream wie alle anderen auch verwenden.You can use this stream like any other, as shown in the following example.

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

Siehe auchSee also