A minimalist explanation as follows.
1. Create the HTTP Web Request
Create the WebRequest object from the from the Universal Resource Identifier (URI) you supply eg
const string Url = "http://www.microsoft.com"; var webRequest = WebRequest.Create(Url);
2. Send the HTTP request and wait for the response
var responseStream = webRequest.GetResponse().GetResponseStream();
3. Create a StreamReader object
The StreamReader object is used to read back the text characters from the HTTP response:
I use the ‘using’ statement as a convenient means of ensure the object is subsequently disposed.
using(var streamReader = new StreamReader(responseStream)) { // Return next available character or -1 if there are no characters to be read while (streamReader.Peek() > -1) { Console.WriteLine(streamReader.ReadLine()); } }
Complete code listing:
using System; using System.IO; using System.Net; namespace GetRequest { internal class Program { private static void Main(string[] args) { // Create the http request const string Url = "http://www.microsoft.com"; var webRequest = WebRequest.Create(Url); // Send the http request and wait for the response var responseStream = webRequest.GetResponse().GetResponseStream(); // Displays the response stream text if (responseStream != null) { using(var streamReader = new StreamReader(responseStream)) { // Return next available character or -1 if there are no characters to be read while (streamReader.Peek() > -1) { Console.WriteLine(streamReader.ReadLine()); } } } Console.ReadLine(); } } }
Giving the following console output:
4. Using timeouts
To do this set the Timeout property on the WebRequest object. To demonstrate I have set this value deliberately low, not giving the web request the chance to get the HTTP reponse:
webRequest.Timeout = 1;
Example implementation:
using System; using System.IO; using System.Net; namespace GetRequest { internal class Program { private static void Main(string[] args) { // Create the http request const string Url = "http://www.microsoft.com"; var webRequest = WebRequest.Create(Url); webRequest.Timeout = 1; try { // Send the http request and wait for the response var responseStream = webRequest.GetResponse().GetResponseStream(); // Displays the response stream text if (responseStream != null) { using(var streamReader = new StreamReader(responseStream)) { // Return next available character or -1 if there are no characters to be read while (streamReader.Peek() > -1) { Console.WriteLine(streamReader.ReadLine()); } } } Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
Giving the following output: