Because many Internet protocols are request-response synchronous protocols, this class serves as a base type for any and all request-response style of network communication. As such, a C# programmer will never create a WebRequest type directly—instead, a static method on this class, Create(), is used as a “virtual constructor” to create a subtype of WebRequest that matches the protocol scheme requested. For example, if the string is passed to Create(), an instance of HttpWebRequest is handed back. Out of the box, only “http”, “https” and “file” are supported.

Once obtained, a C# programmer can manipulate the common properties of the WebRequest type to control various aspects of the request. Alternatively, downcast the generic WebRequest reference to the concrete type returned to access protocol-specific aspects of that protocol—for example, the returned object from WebRequest.Create("") will be a HttpWebRequest, so it is safe to cast it as such. This allows access to the Accept and SendChunked properties/headers in the request. Be sure to manipulate these properties before the request is sent, or the modifications will have no effect.

Use the GetResponse() method to obtain a WebResponse object corresponding to the response that the remote server sent. This means that the request is sent, and the response harvested. The methods BeginGetResponse() and EndGetResponse() are asynchronous versions of GetResponse() ...

Get C# in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.