Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die WebRequest-Klasse ist eine abstrakte Basisklasse, die die Basismethoden und -eigenschaften zum Erstellen eines protokollspezifischen Anforderungshandlers enthält, der dem austauschbaren Protokollmodell in .NET Framework entspricht. Anwendungen, in denen die WebRequest-Klasse verwendet wird, können Daten mit Hilfe von beliebigen unterstützten Protokollen anfordern, ohne das verwendete Protokoll angeben zu müssen.
Damit eine protokollspezifische Klasse als austauschbares Protokoll verwendet werden kann, müssen zwei Kriterien erfüllt sein: Die Klasse muss die IWebRequestCreate-Schnittstelle implementieren und mit der WebRequest.RegisterPrefix-Methode registriert werden. Die Klasse muss alle abstrakten Methoden und Eigenschaften der WebRequest-Klasse überschreiben, damit sie als austauschbare Schnittstelle dienen kann.
WebRequest-Instanzen sind für eine einmalige Verwendung gedacht. Wenn Sie eine weitere Anforderung durchführen möchten, erstellen Sie einen neuen WebRequest. WebRequest unterstützt die ISerializable-Schnittstelle, was Entwicklern das Serialisieren einer WebRequest-Vorlage und das anschließende Rekonstruieren der Vorlage für zusätzliche Anforderungen ermöglicht.
IWebRequest.Create-Methode
Die Create-Methode dient der Initialisierung einer neuen Instanz der protokollspezifischen Klasse. Wenn eine neue WebRequest-Klasse erstellt wird, entspricht die WebRequest.Create-Methode dem angeforderten URI mit den URI-Präfixen, die mit der RegisterPrefix-Methode registriert wurden. Die Create-Methode des richtigen protokollspezifischen Nachkommens muss eine initialisierte Instanz des Nachkommens zurückgeben, die eine standardmäßige Anforderungs-/Antworttransaktion für das Protokoll durchführen kann, ohne dass Änderungen an protokollspezifischen Feldern vorgenommen werden müssen.
ConnectionGroupName-Eigenschaft
Die ConnectionGroupName-Eigenschaft wird verwendet, um eine Gruppe von Verbindungen zu einer Ressource zu benennen, damit mehrere Anforderungen über eine einzelne Verbindung erfolgen können. Zur Implementierung der Freigabe von Verbindungen müssen Sie eine protokollspezifische Methode zum Poolen und Zuweisen von Verbindungen verwenden. So implementiert beispielsweise die bereitgestellte ServicePointManager-Klasse die Freigabe von Verbindungen für die HttpWebRequest-Klasse. Die ServicePointManager-Klasse erstellt einen ServicePoint, der für jede Verbindungsgruppe eine Verbindung zu einem bestimmten Server bietet.
ContentLength-Eigenschaft
Die ContentLength-Eigenschaft gibt die Byteanzahl von Daten an, die beim Uploaden von Daten an den Server gesendet werden.
In der Regel wird die Method-Eigenschaft so festgelegt, dass sie einen Uploadvorgang anzeigt, wenn die ContentLength-Eigenschaft auf einen Wert größer Null festgelegt wurde.
ContentType-Eigenschaft
Die ContentType-Eigenschaft stellt alle speziellen Informationen bereit, die vom Protokoll zum Senden an den Server angefordert werden, damit dort der gesendete Inhaltstyp identifiziert werden kann. Hierbei handelt es sich normalerweise um den Inhaltstyp MIME aller upgeloadeten Daten.
Credentials-Eigenschaft
Die Credentials-Eigenschaft enthält Informationen, die zur Authentifizierung der Anforderung mit dem Server erforderlich sind. Sie müssen die Einzelheiten des Authentifizierungsprozesses für das Protokoll implementieren. Die AuthenticationManager-Klasse ist für das Authentifizieren von Anforderungen und das Bereitstellen eines Authentifizierungstokens zuständig. Die Klasse, die die von dem Protokoll verwendeten Anmeldeinformationen bereitstellt, muss die ICredentials-Schnittstelle implementieren.
Headers-Eigenschaft
Die Headers-Eigenschaft enthält eine willkürliche Auflistung von Name/Wert-Paaren der der Anforderung zugeordneten Metadaten. Alle vom Protokoll benötigten Metadaten, die als ein Name/Wert-Paar ausgedrückt werden können, können in die Headers-Eigenschaft aufgenommen werden. In der Regel müssen diese Informationen festgelegt werden, bevor die GetRequestStream-Methode oder GetResponse-Methode aufgerufen werden, da die Metadaten nach erfolgter Anforderung als schreibgeschützt behandelt werden.
Sie müssen für die Verwendung von Headermetadaten nicht die Headers-Eigenschaft verwenden. Protokollspezifische Metadaten können als Eigenschaften offen gelegt werden, so legt z. B. die HttpWebRequest.UserAgent-Eigenschaft den HTTP-Header Benutzeragent offen. Wenn Sie Headermetadaten als Eigenschaft offen legen, sollten Sie sicherstellen, dass dieselbe Eigenschaft nicht mit der Headers-Eigenschaft eingestellt werden kann.
Method-Eigenschaft
Die Method-Eigenschaft enthält das Verb oder die Aktion, die der Server nach der Anforderung ausführen soll. Standardmäßig muss die Method-Eigenschaft eine Standardanforderungs-/-antwortaktion ermöglichen, ohne dass protokollspezifische Eigenschaften festgelegt werden müssen. So ist beispielsweise GET der Standardwert der HttpWebResponse-Methode, wodurch eine Ressource von einem Webserver angefordert und die Antwort zurückgegeben wird.
In der Regel wird die ContentLength-Eigenschaft auf einen Wert größer Null festgelegt, wenn die Method-Eigenschaft auf ein Verb oder eine Aktion festgelegt wird, wodurch ein Uploadvorgang angezeigt wird.
PreAuthenticate-Eigenschaft
Anwendungen legen die PreAuthenticate-Eigenschaft fest, um anzugeben, welche Authentifizierungsinformationen mit der ursprünglichen Anforderung gesendet werden sollen, statt auf eine Authentifizierungsherausforderung zu warten. Die PreAuthenticate-Eigenschaft ist nur dann sinnvoll, wenn das Protokoll mit der ursprünglichen Anforderung gesendete Authentifizierungsinformationen unterstützt.
Proxy-Eigenschaft
Die Proxy-Eigenschaft enthält eine IWebProxy-Schnittstelle, die für den Zugriff auf die angeforderte Ressource verwendet wird. Die Proxy-Eigenschaft ist nur dann sinnvoll, wenn das Protokoll Proxyanforderungen unterstützt. Sie müssen den Standardproxy angeben, wenn das Protokoll dies erfordert.
In einigen Umgebungen, z. B. hinter der Firewall von Unternehmen, könnte die Verwendung eines Proxys durch das Protokoll festgelegt sein. In diesem Fall müssen Sie die IWebProxy-Schnittstelle implementieren, um eine für das Protokoll geeignete Proxyklasse zu erstellen.
RequestUri-Eigenschaft
Die RequestUri-Eigenschaft enthält den URI, der an die WebRequest.Create-Methode übergeben wurde. Er ist schreibgeschützt und kann nach Erstellung der WebRequest-Klasse nicht mehr geändert werden. Wenn das Protokoll Umleitungen unterstützt, kann die Antwort von einer Ressource kommen, die von einem anderen URI identifiziert wurde. Um den Zugriff auf den URI bereitzustellen, der geantwortet hat, müssen Sie eine zusätzliche Eigenschaft einrichten, die diesen URI enthält.
Timeout-Eigenschaft
Die Timeout-Eigenschaft gibt den Zeitraum in Millisekunden an, nach dem das Zeitlimit der Anforderung überschritten ist, und löst eine Ausnahme aus. Die Timeout-Eigenschaft wird nur auf synchrone Anforderungen angewendet, die mit Hilfe der GetResponse-Methode erstellt wurden. Bei asynchronen Anforderungen muss die Abort-Methode verwendet werden, um eine ausstehende Anforderung abzubrechen.
Das Festlegen der Timeout-Eigenschaft ist nur dann sinnvoll, wenn die protokollspezifische Klasse eine Zeitüberschreitung implementiert.
Abort-Methode
Bei der Abort-Methode wird eine ausstehende asynchrone Anforderung an einen Server abgebrochen. Nach dem Abbrechen der Anforderung löst das Aufrufen der Methoden GetResponse, BeginGetResponse, EndGetResponse, GetRequestStream, BeginGetRequestStream oder EndGetRequestStream eine WebException-Klasse aus, in der die Status-Eigenschaft auf RequestCanceled festgelegt wurde.
BeginGetRequestStream-Methode und EndGetRequestStream-Methode
Durch die BeginGetRequestStream-Methode wird eine asynchrone Anforderung für den Stream zum Uploaden von Daten auf den Server gestartet. Über die EndGetRequestStream-Methode wird die asynchrone Anforderung abgeschlossen, und der angeforderte Stream wird zurückgegeben. Bei diesen Methoden wird durch Verwendung des asynchronen Standardmusters von .NET Framework die GetRequestStream-Methode implementiert.
BeginGetResponse-Methode und EndGetResponse-Methode
Durch die BeginGetResponse-Methode wird eine asynchrone Anforderung an einen Server gestartet. Über die EndGetResponse-Methode wird die asynchrone Anforderung abgeschlossen, und die angeforderte Antwort wird zurückgegeben. Bei diesen Methoden wird durch Verwendung des asynchronen Standardmusters von .NET Framework die GetResponse-Methode implementiert.
GetRequestStream-Methode
Bei der GetRequestStream-Methode wird ein Stream zurückgegeben, der zum Schreiben von Daten in den angeforderten Server verwendet wird. Der zurückgegebene Stream sollte schreibgeschützt sein und keine Seek-Operationen durchführen. Er soll ein einseitiger Datenstream sein, der in den Server geschrieben wird. Der Stream gibt für die CanRead-Eigenschaft und die CanSeek-Eigenschaft den Wert false und für die CanWrite-Eigenschaft den Wert true zurück.
Durch die GetRequestStream-Methode wird in der Regel eine Verbindung zum Server geöffnet. Außerdem bewirkt sie, dass vor Rückgabe des Streams Headerinformationen gesendet werden, die angeben, dass Daten an den Server gesendet werden. Da die Anforderung durch die GetRequestStream-Methode gestartet wird, ist es in der Regel nicht zulässig, nach dem Aufrufen dieser Methode beliebige Header-Eigenschaften oder die ContentLength-Eigenschaft festzulegen.
GetResponse-Methode
Durch die GetResponse-Methode wird ein protokollspezifischer Nachkomme der WebResponse-Klasse zurückgegeben, der die Antwort vom Server repräsentiert. Wenn die Anforderung nicht bereits durch die GetRequestStream-Methode initiiert wurde, bewirkt die GetResponse-Methode, dass eine Verbindung zur Ressource hergestellt wird, die durch die RequestUri-Eigenschaft identifiziert wird, dass Headerinformationen gesendet werden, die den Typ der durchgeführten Anforderung anzeigen, und dass die Antwort von der Ressource empfangen wird.
Nach dem Aufrufen der GetResponse-Methode werden alle Eigenschaften als schreibgeschützt behandelt. WebRequest-Instanzen sind für eine einmalige Verwendung gedacht. Wenn Sie eine weitere Anforderung durchführen möchten, sollten Sie einen neuen WebRequest erstellen.
Die GetResponse-Methode ist für das Erstellen eines geeigneten WebResponse-Nachkommens verantwortlich, der die eingehende Antwort enthalten soll.
Siehe auch
Programmieren von austauschbaren Protokollen | Ableiten aus WebResponse | WebRequest-Klasse | HttpWebRequest-Klasse | FileWebRequest-Klasse