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 WebRequestist eine abstrakte Basisklasse. Sie verwenden es also nicht direkt. Sie verwenden es durch abgeleitete Klassen - HttpWebRequestund FileWebRequest.
Sie verwenden die Create-Methode von WebRequest, um eine Instanz von zu erstellen WebRequest. GetResponseStreamkehrt zurück data stream.
Es gibt auch FileWebRequestund FtpWebRequestKlassen, die inheritvon WebRequest. Normalerweise würden Sie verwenden , WebRequestum, na ja, eine Anfrage und die Rückkehr zu entweder konvertieren HttpWebRequest, FileWebRequestoderFtpWebRequest 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
WebClientstellt allgemeine Vorgänge für sendingund receivingDaten von einer Ressource bereit, die durch a gekennzeichnet ist URI. Es ist einfach eine übergeordnete Abstraktion von HttpWebRequest. Diese "gemeinsamen Operationen" unterscheiden sich WebClientvon denen HttpWebRequest, wie auch im folgenden Beispiel gezeigt:
Beispiel:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
Es gibt auch DownloadDataund DownloadFileOperationen unter WebClientInstanz. Diese allgemeinen Operationen vereinfachen auch den Code dessen, was wir normalerweise tun würden HttpWebRequest. Mit HttpWebRequestmü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 WebClientrufen wir einfach anDownloadData, DownloadFile or DownloadString .
Beachten Sie jedoch, dass WebClient.DownloadStringdie encodingvon 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.