ASP.NET Connect with WebClient

WebClient is a very basic, easy way to request data from a particular URI. The easiest method to use is DownloadFile() which takes a URI and then the path to save it to.

<%@ Page Language="C#" %>
<script runat="server">
	void Page_Load(object sender, System.EventArgs e)
	{
		using (System.Net.WebClient wc = new System.Net.WebClient())
		{
			wc.DownloadFile("http://www.prowaretech.com/", Server.MapPath("/") + "homepage.html");
			Response.Redirect("homepage.html");
		}
	}
</script>
<html>
	<head><title></title></head>
	<body>
	</body>
</html>

To process the data within the application, use the method OpenRead() to get a System.IO.Stream object.

<%@ Page Language="C#" %>
<script runat="server">
	void Page_Load(object sender, System.EventArgs e)
	{
		using (System.Net.WebClient wc = new System.Net.WebClient())
		{
			using (System.IO.Stream stream = wc.OpenRead("http://www.prowaretech.com/_bargraph.aspx"))
			{
				using (System.IO.StreamReader reader = new System.IO.StreamReader(stream))
				{
					Response.Write(reader.ReadToEnd());
				}
			}
		}
	}
</script>

To send a Cookie to the server, use the Headers.Add() method. _echo.aspx simply puts out whatever was put into it.

<%@ Page Language="C#" %>
<script runat="server">
	void Page_Load(object sender, System.EventArgs e)
	{
		using (System.Net.WebClient wc = new System.Net.WebClient())
		{
			wc.Headers.Add("Cookie: username=mrsmith");
			using (System.IO.Stream stream = wc.OpenRead("http://www.prowaretech.com/_echo.aspx"))
			{
				using (System.IO.StreamReader reader = new System.IO.StreamReader(stream))
				{
					Response.Write(reader.ReadToEnd());
				}
			}
		}
	}
</script>

To send data like a file to a server, use the UploadFile() method.

<%@ Page Language="C#" %>
<script runat="server">
	void Page_Load(object sender, System.EventArgs e)
	{
		using (System.Net.WebClient wc = new System.Net.WebClient())
		{
			wc.UploadFile("http://www.domain.com/NewFileName.jpg", @"C:\Images\File.jpg");
		}
	}
</script>

The UploadData() method allows uploading binary data.

<%@ Page Language="C#" %>
<script runat="server">
	void Page_Load(object sender, System.EventArgs e)
	{
		using (System.Net.WebClient wc = new System.Net.WebClient())
		{
			byte[] bytes = { 1, 9, 2, 5, 3, 4, 7, 8, 9, 5, 3, 1, 7, 9, 0 };
			wc.UploadData("http://www.domain.com/BinaryData.bin", bytes);
		}
	}
</script>

To send data (like a POST) to a URI and retrieve a response, use the more complicated but also more comprehensive WebRequest & WebResponse objects.

There is another method not covered here: OpenWrite(), which allows for "PUT" operations. It does not get the response and as such is not very useful. There is also a DownloadData() method used for downloading into a byte array.