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
WebRequest
Jest abstrakcyjną klasą bazową. Więc właściwie nie używasz go bezpośrednio. Używasz go za pośrednictwem klas pochodnych - HttpWebRequest
i FileWebRequest
.
Używasz metody Create of, WebRequest
aby utworzyć wystąpienie WebRequest
. GetResponseStream
zwraca data stream
.
Są też FileWebRequest
i FtpWebRequest
klasy inherit
z tego WebRequest
. Normalnie byłoby użyć WebRequest
do, dobrze, złożyć zamówienie i konwertować zwrotu albo HttpWebRequest
, FileWebRequest
lub 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
WebClient
zapewnia wspólne operacje sending
i receiving
dane z zasobu zidentyfikowanego przez a URI
. Po prostu jest to abstrakcja wyższego poziomu HttpWebRequest
. Ten „wspólnych operacji” jest co odróżnienia WebClient
od 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ż DownloadData
i DownloadFile
operacje w ramach WebClient
instancji. 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ć StreamReader
odczytanie odpowiedzi i ostatecznie przekonwertować wynik na dowolny typ, jakiego oczekujemy. Po WebClient
prostu dzwonimy DownloadData, DownloadFile or DownloadString
.
Pamiętaj jednak, że WebClient.DownloadString
nie uwzględnia encoding
to żą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 = false
robienie innych niestandardowych rzeczy i ma wiele dziwactw i osobliwości. Uruchomiłem RestSharp, aby rozwiązać te problemy.