So che è troppo tempo per rispondere, ma solo come scopo informativo per i futuri lettori:
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
Il WebRequestè una classe base astratta. Quindi in realtà non lo usi direttamente. Lo usi attraverso le sue classi derivate - HttpWebRequeste FileWebRequest.
Si utilizza il metodo Crea di WebRequestper creare un'istanza di WebRequest. GetResponseStreamritorna data stream.
Ci sono anche FileWebRequeste FtpWebRequestclassi che inheritprovengono da WebRequest. Normalmente, si usa WebRequest, beh, per fare una richiesta e convertire il reso in HttpWebRequest, FileWebRequesto FtpWebRequest, dipende dalla propria richiesta. Di seguito è riportato un esempio:
Esempio:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
WebClient
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
WebClientfornisce operazioni comuni sendinge receivingdati da una risorsa identificata da a URI. Semplicemente, è un'astrazione di livello superiore di HttpWebRequest. Questo 'operazioni comuni' è ciò che differenzia WebClientda HttpWebRequest, come anche illustrato nell'esempio di seguito:
Esempio:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
Ci sono anche DownloadDatae DownloadFileoperazioni in WebClientistanza. Queste operazioni comuni semplificano anche il codice di ciò che normalmente faremmo HttpWebRequest. Utilizzando HttpWebRequest, dobbiamo ottenere la risposta della nostra richiesta, creare un'istanza StreamReaderper leggere la risposta e, infine, convertire il risultato in qualunque tipo ci aspettiamo. Con WebClient, semplicemente chiamiamoDownloadData, DownloadFile or DownloadString .
Tuttavia, tieni presente che WebClient.DownloadStringnon considera ilencoding la risorsa che stai richiedendo. Quindi, probabilmente finiresti per ricevere strani caratteri se non specifichi e codifichi.
NOTA: Fondamentalmente " WebClient accetta poche righe di codice rispetto a Webrequest "
ServicePointManager.Expect100Continue = false, fa altre cose non standard e ha molte stranezze e idiosincrasie. Ho avviato RestSharp per aiutare a risolvere questi problemi.