HttpWebRequest example with error handling (C#)
This C# example explains how to GET or POST a request to a web server using the .NET framework classes HttpWebRequest and HttpWebResponse. The code is embedded in a command line example program, where a specified URL is requested using the HTTP method "GET", and the response is written to a specified file.To use the code for example on an aspx page, just cut out the WRequest() function and catch the return string. A VB.Net version of the function is also available.
The WRequest() parameters are: URL, HTTP_method, POST_data
- URL: Any valid URL.
- HTTP_method: Use "GET" to make a normal request or "POST" to submit additional (form) data along with the request.
- POST_data: An empty string if HTTP_method "GET" is used, a string of POST data if HTTP_method "POST" is used. The format is "param1=value1¶m2=value2"
using System;
using System.IO;
using System.Net;
using System.Text;
public class HttpWebRequestTool
{
public static void Main(String[] args)
{
if (args.Length < 2)
{
Console.WriteLine("Missing argument. Need a URL and a filename");
}
else
{
StreamWriter sWriter = new StreamWriter(args[1]);
sWriter.Write(WRequest(args[0], "GET", ""));
sWriter.Close();
}
}
public static string WRequest(string URL, string method, string postData)
{
string responseData = "";
try
{
System.Net.CookieContainer cookieJar = new System.Net.CookieContainer();
System.Net.HttpWebRequest hwrequest =
(System.Net.HttpWebRequest) System.Net.WebRequest.Create(URL);
hwrequest.CookieContainer = cookieJar;
hwrequest.Accept = "*/*";
hwrequest.AllowAutoRedirect = true;
hwrequest.UserAgent = "http_requester/0.1";
hwrequest.Timeout= 60000;
hwrequest.Method = method;
if (hwrequest.Method == "POST")
{
hwrequest.ContentType = "application/x-www-form-urlencoded";
// Use UTF8Encoding instead of ASCIIEncoding for XML requests:
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] postByteArray = encoding.GetBytes(postData);
hwrequest.ContentLength = postByteArray.Length;
System.IO.Stream postStream = hwrequest.GetRequestStream();
postStream.Write(postByteArray, 0, postByteArray.Length);
postStream.Close();
}
System.Net.HttpWebResponse hwresponse =
(System.Net.HttpWebResponse) hwrequest.GetResponse();
if (hwresponse.StatusCode == System.Net.HttpStatusCode.OK)
{
System.IO.Stream responseStream = hwresponse.GetResponseStream();
System.IO.StreamReader myStreamReader =
new System.IO.StreamReader(responseStream);
responseData = myStreamReader.ReadToEnd();
}
hwresponse.Close();
}
catch (Exception e)
{
responseData = "An error occurred: " + e.Message;
}
return responseData;
}
}
using System.IO;
using System.Net;
using System.Text;
public class HttpWebRequestTool
{
public static void Main(String[] args)
{
if (args.Length < 2)
{
Console.WriteLine("Missing argument. Need a URL and a filename");
}
else
{
StreamWriter sWriter = new StreamWriter(args[1]);
sWriter.Write(WRequest(args[0], "GET", ""));
sWriter.Close();
}
}
public static string WRequest(string URL, string method, string postData)
{
string responseData = "";
try
{
System.Net.CookieContainer cookieJar = new System.Net.CookieContainer();
System.Net.HttpWebRequest hwrequest =
(System.Net.HttpWebRequest) System.Net.WebRequest.Create(URL);
hwrequest.CookieContainer = cookieJar;
hwrequest.Accept = "*/*";
hwrequest.AllowAutoRedirect = true;
hwrequest.UserAgent = "http_requester/0.1";
hwrequest.Timeout= 60000;
hwrequest.Method = method;
if (hwrequest.Method == "POST")
{
hwrequest.ContentType = "application/x-www-form-urlencoded";
// Use UTF8Encoding instead of ASCIIEncoding for XML requests:
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] postByteArray = encoding.GetBytes(postData);
hwrequest.ContentLength = postByteArray.Length;
System.IO.Stream postStream = hwrequest.GetRequestStream();
postStream.Write(postByteArray, 0, postByteArray.Length);
postStream.Close();
}
System.Net.HttpWebResponse hwresponse =
(System.Net.HttpWebResponse) hwrequest.GetResponse();
if (hwresponse.StatusCode == System.Net.HttpStatusCode.OK)
{
System.IO.Stream responseStream = hwresponse.GetResponseStream();
System.IO.StreamReader myStreamReader =
new System.IO.StreamReader(responseStream);
responseData = myStreamReader.ReadToEnd();
}
hwresponse.Close();
}
catch (Exception e)
{
responseData = "An error occurred: " + e.Message;
}
return responseData;
}
}
Use the following command (from a folder containing the source file) to compile the program:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /out:HttpWebThingie.exe HttpWebThingie.cs
Note: The path to the .NET framework compiler may not be exactly like above on all systems.