Ich weiß, dass es zu lang ist, um zu antworten, aber nur als Informationszweck für zukünftige Leser:
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
Das WebRequest
ist eine abstrakte Basisklasse. Sie verwenden es also nicht direkt. Sie verwenden es durch abgeleitete Klassen - HttpWebRequest
und FileWebRequest
.
Sie verwenden die Create-Methode von WebRequest
, um eine Instanz von zu erstellen WebRequest
. GetResponseStream
kehrt zurück data stream
.
Es gibt auch FileWebRequest
und FtpWebRequest
Klassen, die inherit
von WebRequest
. Normalerweise würden Sie verwenden , WebRequest
um, na ja, eine Anfrage und die Rückkehr zu entweder konvertieren HttpWebRequest
, FileWebRequest
oderFtpWebRequest
abhängig von Ihrer Anfrage . Unten ist ein Beispiel:
Beispiel:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
WebClient
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
WebClient
stellt allgemeine Vorgänge für sending
und receiving
Daten von einer Ressource bereit, die durch a gekennzeichnet ist URI
. Es ist einfach eine übergeordnete Abstraktion von HttpWebRequest
. Diese "gemeinsamen Operationen" unterscheiden sich WebClient
von denen HttpWebRequest
, wie auch im folgenden Beispiel gezeigt:
Beispiel:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
Es gibt auch DownloadData
und DownloadFile
Operationen unter WebClient
Instanz. Diese allgemeinen Operationen vereinfachen auch den Code dessen, was wir normalerweise tun würden HttpWebRequest
. Mit HttpWebRequest
müssen wir die Antwort auf unsere Anfrage erhalten, instanziieren StreamReader
, um die Antwort zu lesen, und schließlich das Ergebnis in den von uns erwarteten Typ konvertieren. Mit WebClient
rufen wir einfach anDownloadData, DownloadFile or DownloadString
.
Beachten Sie jedoch, dass WebClient.DownloadString
die encoding
von Ihnen angeforderte Ressource nicht berücksichtigt wird . Sie würden also wahrscheinlich seltsame Zeichen erhalten, wenn Sie nicht angeben und codieren.
HINWEIS: Grundsätzlich " WebClient benötigt im Vergleich zu Webrequest nur wenige Codezeilen "
ServicePointManager.Expect100Continue = false
, macht andere nicht standardmäßige Dinge und hat viele Macken und Eigenheiten. Ich habe RestSharp gestartet, um diese Probleme zu beheben.