WebClient vs. HttpWebRequest/HttpWebResponse
Wydaje mi się, że większość tego, co można osiągnąć z HttpWebRequest/Response
Może być również osiągnięty za pomocą WebClient
klasy. Czytałem gdzieś, że {[1] } jest wysokiej klasy opakowaniem dla WebRequest/Response
.
Jak na razie nie widzę niczego, co można osiągnąć za pomocą HttpWebRequest/Response
, czego nie można osiągnąć za pomocą WebClient
, Ani gdzie HttpWebRequest / Response da Ci bardziej "drobnoziarnistą" kontrolę.
Kiedy należy używać WebClient i kiedy HttpWebRequest/Response
? (Oczywiście {[0] } są HTTP dokładnie.)
Jeśli HttpWebRequest/Response
są niższym poziomem, to WebClient
, Co mogę osiągnąć z HttpWebRequest/Response
, czego nie mogę osiągnąć z WebClient
?
8 answers
Użycie HttpWebRequest
daje większą kontrolę nad żądaniem. Możesz ustawić pliki cookie, nagłówki, protokół itp... W odpowiedzi Możesz również pobrać pliki cookie i nagłówki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-07 21:01:54
HttpWebRequest
wyświetla dużo więcej rzeczy, które pozwalają na drobnoziarnistą kontrolę protokołów, na przykład: czy chcesz użyć Keep-Alive, jakiej puli połączeń użyć, czy do buforowania zapisów, czy nie, itp.
WebClient
nie ujawnia tych wszystkich (chociaż możesz podklasować z WebClient
i uzyskać dostęp do bazowego obiektu Request).
WebClient
jest przydatny w sytuacjach, w których po prostu chcesz wykonać operację (NP: POST / GET / Form upload) i nie możesz sobie poradzić z tworzeniem i zarządzaniem HttpWebRequest
, RequestStream
, HttpWebResponse
, i strumień odpowiedzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-30 17:54:15
Z bloga Tima Heuera - http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx
Zamiast tego w Silverlight będziesz chciał użyć WebClient lub HttpWebRequest. Co za różnica? Oto wersja timheuera. WebClient jest prostszą implementacją wykonującą żądania GET I get a response stream. HttpWebRequest jest świetny, gdy potrzebujesz nieco bardziej szczegółowej kontroli nad żądaniem, musisz wysłać nagłówki lub inne dostosowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-07 21:02:46
Klasa WebClient działa w wątku interfejsu użytkownika, więc interfejs użytkownika nie reaguje podczas pobierania danych z Internetu. Z drugiej strony, klasa HttpWebRequest nie blokuje wątku interfejsu użytkownika, a Twoja aplikacja reaguje. Tak więc, w aplikacjach, w których duża ilość danych ma być pobrana z Internetu lub jeśli źródło danych jest wolne, należy użyć klasy HttpWebRequest; we wszystkich innych przypadkach należy użyć Klasa WebClient.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-23 04:45:47
"HtttpWebRequest" jest przestarzały w. NET 4.5. Ta klasa jest tylko wewnętrzna.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-27 19:28:59
Jeszcze jedno HttpWebrquest pozwala na kompresję, ale on Net.Klasa WebClient nie obsługuje kompresji HTTP
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-01 01:30:06
Kolejną wadą WebClient
jest ignorowanie wartości HTTP ContentType
s charset
, Gdy używasz jej do uzyskania tekstu odpowiedzi. Musisz jawnie ustawić kodowanie za pomocą właściwości Encoding
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-09 02:37:39
Jeden przykład: wysyłanie danych i odzyskiwanie przetworzonych danych w jednym cyklu żądania / odpowiedzi wydaje się niemożliwe z WebClient, ale możesz to zrobić za pomocą HtttpWebRequest.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-30 07:08:41