Wiem, że to zbyt długo, aby odpowiedzieć, ale tylko jako cel informacyjny dla przyszłych czytelników:
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
WebRequestJest abstrakcyjną klasą bazową. Więc właściwie nie używasz go bezpośrednio. Używasz go za pośrednictwem klas pochodnych - HttpWebRequesti FileWebRequest.
Używasz metody Create of, WebRequestaby utworzyć wystąpienie WebRequest. GetResponseStreamzwraca data stream.
Są też FileWebRequesti FtpWebRequestklasy inheritz tego WebRequest. Normalnie byłoby użyć WebRequestdo, dobrze, złożyć zamówienie i konwertować zwrotu albo HttpWebRequest, FileWebRequestlub FtpWebRequest, zależy od wniosku. Poniżej przykład:
Przykład:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
WebClient
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
WebClientzapewnia wspólne operacje sendingi receivingdane z zasobu zidentyfikowanego przez a URI. Po prostu jest to abstrakcja wyższego poziomu HttpWebRequest. Ten „wspólnych operacji” jest co odróżnienia WebClientod HttpWebRequest, jak również pokazano w poniższym przykładzie:
Przykład:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
Istnieją również DownloadDatai DownloadFileoperacje w ramach WebClientinstancji. Te wspólne operacje upraszczają również kod tego, co normalnie robilibyśmy HttpWebRequest. Używając HttpWebRequest, musimy uzyskać odpowiedź na nasze żądanie, zainicjować StreamReaderodczytanie odpowiedzi i ostatecznie przekonwertować wynik na dowolny typ, jakiego oczekujemy. Po WebClientprostu dzwonimy DownloadData, DownloadFile or DownloadString.
Pamiętaj jednak, że WebClient.DownloadStringnie uwzględnia encodingto żądanego zasobu. Więc prawdopodobnie otrzymasz dziwne znaki, jeśli nie określisz i nie zakodujesz.
UWAGA: Zasadniczo „ WebClient zajmuje kilka wierszy kodu w porównaniu z Webrequest ”
ServicePointManager.Expect100Continue = falserobienie innych niestandardowych rzeczy i ma wiele dziwactw i osobliwości. Uruchomiłem RestSharp, aby rozwiązać te problemy.