For a lot of typical use cases, you can rely on the basic functionality provided by the underlying WebRequest class. However, you'll never actually be using instances of it directly in your code (you can't... it's abstract, remember?), so now is the time to look at what other functionality or features exist when you're using common concrete instances of it. We'll look at each of the sub-classes for which WebRequest has a default, preregistered handler.
The sub-classes of the WebRequest class
A note on obsolete sub-classes
Here, it's important to note that the WebRequest class is primarily a tool for creating lower-level, protocol agnostic request/response transactions with other resources on your...