It seems that HttpWebRequest
has more control like ReadWriteTimeout
. I am wondering whether I should stick with HttpWebRequest
, rather than WebRequest

- 15,808
- 23
- 102
- 173

- 83,087
- 147
- 309
- 426
-
See also [SO](http://stackoverflow.com/questions/896253/c-sharp-httpwebrequest-vs-webrequest) – SteveC Nov 21 '12 at 11:17
-
seems like this question repeated every year: http://stackoverflow.com/q/8209781/274502 – cregox Jun 10 '13 at 14:58
3 Answers
WebRequest
is the base/parent class for HttpWebRequest
and some other requests as listed here.
For now, they are:
System.IO.Packaging.PackWebRequest
System.Net.FileWebRequest
System.Net.FtpWebRequest
System.Net.HttpWebRequest

- 21,633
- 5
- 37
- 59
A WebRequest
can be a HttpWebRequest
/FtpWebRequest
/FileWebRequest
(or more in the future...)

- 42,509
- 16
- 113
- 174
I know its too long time but just for information purpose:
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
The WebRequest
is an abstract base class. So you actually don't use it directly. You use it through it derived classes - HttpWebRequest
and FileWebRequest
.
You use Create method of WebRequest
to create an instance of WebRequest
. GetResponseStream
returns data stream
.
There are also FileWebRequest
and FtpWebRequest
classes that inherit from WebRequest
. Normally, you would use WebRequest
to, well, make a request and convert the return to either HttpWebRequest
, FileWebRequest
or FtpWebRequest
, depend on your request. Below is an example:
Example:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
Hope this helps!

- 5,964
- 15
- 85
- 143