Using HttpWebRequest
gives you more control on the request. You can set cookies, headers, protocol, etc... In the response, you can also retrieve the cookies and headers
HttpWebRequest
exposes a lot more stuff that allows you fine grained protocol control, for eg: whether you want to use Keep-Alive, what connection pool to use, whether to buffer writes or not, etc.
WebClient
does not expose all of those (although you can subclass from WebClient
and getaccess to the underlying Request object).
WebClient
is useful for those situations where you just want to do an operation (eg: POST/GET/Form upload) and cant be bothered to create and manage the HttpWebRequest
, RequestStream
, HttpWebResponse
, and response stream.
From Tim Heuer's blog - http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx
Instead in Silverlight you'll want to use WebClient or HttpWebRequest. What's the difference? Here's the timheuer version. WebClient is a simpler implementation doing GET requests really easily and get a response stream. HttpWebRequest is great for when you need a bit more granular control over the request, need to send headers or other customizations.
The WebClient class runs on the user interface thread, so the user interface is not responsive while data is being downloaded from the Internet. On the other hand, the HttpWebRequest class does not block the user interface thread, and your application is responsive. So, in apps where a large amount of data is to be downloaded from the Internet or if the source of the data is slow to access, you should use the HttpWebRequest class; in all other cases, you should use the WebClient class.
Another disadvantage of WebClient
is it ignores the HTTP ContentType
's charset
value when you use it to get the response text. You have to explicitly set the encoding via the Encoding
property.
One more thing HttpWebrquest allows you compression but he Net.WebClient class doesn't support HTTP compression
The "HtttpWebRequest" is obsolete in .NET 4.5. Now, this class is internal only.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With