Blue Theme Orange Theme Green Theme Red Theme
 
Home | Forums | Videos | Photos | Downloads | Blogs | Interviews | Jobs | Beginners | Training
 | Consulting  
Submit an Article Submit a Blog 
 Login Close
User Id:
Password:
 
Forgot Password
Forgot Username
Why Register
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
 Resources  
Close
 Our Network  
Close
Search :       Advanced Search »
Home » Internet & Web » Using WebRequest and WebResponse classes

Using WebRequest and WebResponse classes

Downloading and uploading data from the web has been a very common programming practice these days.

Author Rank:
Total page views :  134071
Total downloads : 
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Become a Sponsor

In this article, you'll see how to download and upload files through HTTP.  

Uploading and Downloading Files

The System.Net.WebClient class provides functionality to upload data to or download data from the Internet or intranet or a local file system. The WebClient class provides many ways to download and upload data. The following table describes WebClient class methods and properties briefly.








 

 

 

 

 

 


Member Type Description
BaseURI Property Current base URL address
Headers Property Headers in the form of name and value pair associated with the request.
QueryStrings Property Queries in the form of name and value pair associated with the request.
ResponseHeaders Property Headers in the form of name and value pair associated with the response.
DownloadData Method Download data from a URI and returns data as a byte array.
DownloadFile Method Download data from a URI and saves as a local file.
OpenRead Method Opens and reads a URI in stream form.
OpenWrite Method Opens a stream to write data to a URI.
UploadData Method Uploads data buffer to a URI.
UploadFile Method Uploads a local file to the given URI.
UploadValues Method Uploads name and value collection.

 
Using WebClient Class

Downloading Data

The WebClient provides three different methods to download data either from the Internet, intranet, or local file system.

WebClient constructor doesn't take any arguments. In the following code, URL is the file name you want to download such as http://www.c-sharpcorner.com/index.asp. You can download any type of files using these methods such as image files, html and so on.

string URL = textBox1.Text;
WebClient client =
new WebClient();

The DownloadData method takes URI as a parameter, downloads data from a resource URI and returns a byte string.

byte [] bytedata = client.DownloadData(URL);

The DownloadFile method downloads data from a resource and saves it to the local file system. Hence it takes parameters, first is URI name and second is the file name stored as on the local system. The following code downloads a URL and saves it as temp.asp.

client.DownloadFile(URL, "C:\\temp.asp");

The OpenRead method downloads data from a resource and return data as a stream.

Stream data = client.OpenRead(URL);

Source Code:

// Address of URL
string URL = textBox1.Text;
try
{
// Get HTML data
WebClient client = new WebClient();
Stream data = client.OpenRead(URL);
StreamReader reader =
new StreamReader(data);
string str = "";
str = reader.ReadLine();
while( str != null)
{
Console.WriteLine(str);
str = reader.ReadLine();
}
data.Close();
}
catch(WebException exp)
{
MessageBox.Show(exp.Message, "Exception");
}

Upload Data

The WebClient class provides four different ways to uploading data to a resource.

The OpenWrite method sends a data stream to the resource. It's reverse operation of OpenRead method. You pass URI as first parameter of OpenWrite.

OpenWrite(string);

The UploadData method sends a byte array to the resource and returns a byte array containing any response. It's a reverse operation of DownloadData method. It takes two arguments of string and array of bytes respectively.

UploadData(string, byte[]);

client.UploadData("http://www.mindcracker.com/testfile.bmp", data);

The UploadFile method sends a local file to the resource and returns a byte array containing any response. It's a reverse operation of DownloadFile. UploadFile also takes two parameters. First a URI name and second file to be uploaded.

UploadFile(string string);

client.UploadFile("http://www.mindcracker.com/tst.gif", @"c:\mcb.gif");

Or:

client.UploadFile("http://www.mindcracker.com/test.htm", @"c:\test.htm");   

The UploadValues sends a NameValueCollection to the resource and returns a byte array containing any response.

UploadValues(string, NameValueCollection);

Using WebRequest and WebResponse Classes


Although you can use WebClient class to upload and download data but there are more things involved in uploading and downloading data. What if you don't have right to upload to the server you are uploading to? Did you see us passing userid and passwords for the server somewhere? We didn't think so. So if you don't have permission to write to the server, you get this error.



So what we do now? That's where boundary of the WebClient class ends. And that's where the WebRequest and WebResponse classes come in the existence.

The WebRequest Class

The WebRequest is an abstract base class. So you actually don't use it directly. You use it through it derived classes - HttpWebRequest and FileWebRequest.

You use Create method of WebRequest to create an instance of WebRequest. GetResponseStream returns data stream. The following sample example downloads data stream from a web page.         

Sample Code

using System;
using System.Net;
using System.IO;
namespace WebRequestSamp
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
WebRequest request = WebRequest.Create(http://www.c-sharpcorner.com/index.asp);
WebResponse response = request.GetResponse();
StreamReader reader =
new StreamReader(response.GetResponseStream());
string str = reader.ReadLine();
while(str != null)
{
Console.WriteLine(str);
str = reader.ReadLine();
}
}
}


HttpWebRequest and HttpWebResponse classes works in same way too. Here is one sample example. 

Using HttpWebRequest and HttpWebResponse Classes

HttpWebRequest request = (HttpWebRequest)WebRequest.Create (http://www.microsoft.com );
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
String ver = response.ProtocolVersion.ToString();
StreamReader reader =
new StreamReader(response.GetResponseStream() );
string str = reader.ReadLine();
while(str != null)
{
Console.WriteLine(str);
str = reader.ReadLine();
}

Well .. that's it for now. My next submission is Web Browser. It should be up on the site soon.


Login to add your contents and source code to this article
 About the author
 
Mahesh Chand
Mahesh is a software developer with over 13 years of experience building systems for Financial and Banking, Engineering & Architectural, Imaging, Construction, Biological & Pharmaceuticals, Healthcare and Education industries. His expertise is Windows Forms, ASP.NET, Silverlight, WPF, WCF, Visual Studio 2010, SQL Server, and Oracle. If you are looking for a Windows Forms, ASP.NET, WPF, Silverlight, C#, VB.NET, Oracle, and SQL Server Consultant in Philadelphia area or remote location, drop me a line at MAHESH [AT] C-SHARPCORNER [DOT] COM.
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Go.NET
Build custom interactive diagrams, network, workflow editors, flowcharts, or software design tools. Includes many predefined kinds of nodes, links, and basic shapes. Supports layers, scrolling, zooming, selection, drag-and-drop, clipboard, in-place editing, tooltips, grids, printing, overview window, palette. 100% implemented in C# as a managed .NET Control. Document/View/Tool architecture with many properties&events. Optional automatic layout.
Dundas Software
Dundas Chart for .NET is the most advanced .NET charting package available today.  With an extremely complete feature set, elegant architecture and easy implementation, Dundas Chart can quickly add advanced Charting functionality to enhance and transform ASP.NET and Windows Forms applications.  Whether you are implementing charting into internal projects, or building applications for clients, Dundas Chart offers advanced technology and advanced results to get the most out of data.
Clickatell's SMS Gateway
Clickatell's Developer Solutions allow you to SMS enable any website or application via a range of API's. Learn More about our API connections.
Free access to .NET Memory Management video
Everything you need to know about Garbage Collection, Temporary Objects, Fragmentation, Finalization and common causes of memory leaks in .NET. Watch the video here.
Microsoft Visual Studio 2010 Professional
Microsoft Visual Studio 2010 Professional will launch on April 12, but you can beat the rush and secure your copy today by pre-ordering at the affordable estimated retail price of $549 (US). Pre-order now.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Developer-Ready ASP.NET 2.0 Web Hosting with 3 MONTHS FREE
Now supporting .NET 3.0 Framework with Windows Workflow Foundation, Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), windows CardSpace (WCS)! Providing more flexibility for Developers with Web Services Support and a User/Permission Manger. Also supporting MS SQL 2005/2000 with Real-Time Backups, FREE Automated Attach .MDF Tool, FREE SQL Restore and Shrink SQL DB Tools, and SQL
 
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
 Post a Feedback, Comment, or Question about this article
Subject:  
Comment:  
Become a Sponsor
 Comments
Can not upload file using webclient by rashmi On April 10, 2006

I m getting Error 405 while uploading file using web client.

Can uploading be done throuh web request oobject.

How can it be done, Please guide me .

Thanks in advance,

Rashmi

Reply | Email | Delete | Modify | 
how to post data at xyz.com and get response by Rajkumar On April 20, 2007

Hi..

Suppose i have two value like val="10" and val2="20",

i want to post it at xyz.com and get response is sum of these value,then what code we write to send and get the response using httpwebrequest/response.

Plz guide me..

with regards

Ranjan Gupta New Delhi India (09873507465 )

Reply | Email | Delete | Modify | 
Re: how to post data at xyz.com and get response by Mahesh On April 24, 2007
I don't think you can do this using direct request and response. You will have to run a Web Service on the domain and call its method. Method will take two parameters and return the sum. Check Web Services section of this site to learn how to Create a Web Service and client applications.
Reply | Email | Delete | Modify | 
How to post data to Url by Raja On May 10, 2007
Hi.. Suppose i have two values like SSN and ID i want to post it at website(URL) and get response is reply message from curresponding website,then what code we write to send and get the response using httpwebrequest/response. Plz guide me.. with regards Raja.S
Reply | Email | Delete | Modify | 
blocking a site or host by malini On June 28, 2007
hello sir, i am doing my project proxy server in c#.net and i am having a module for site and ip blocking.i am not able to make it a success. so, can u pls provide me the code for site/ip blocking thank u
Reply | Email | Delete | Modify | 
Re: blocking a site or host by Mahesh On May 2, 2009
All non article related questions should be posted on the forums.
Reply | Email | Delete | Modify | 
Downloading CSV File from server by abhi On September 17, 2007
Im developing an API which would download a CSV file from a server. I hope i can download it using the HttpWebRequest class. in the create method where i pass the URI, i will pass the link to the server , do i need to specify he filename also in the URI. Please advice me! Thanks in advance.
Reply | Email | Delete | Modify | 
Downloading CSV File from server by Manish On April 8, 2009
Yes, U have to specify file name also.
Reply | Email | Delete | Modify | 
hi,please help me.... by ashish On May 2, 2009
i am using webrequest class for reading data from another site,there is paging on site with 1,2,3 input button ,i am getting first page result,but i am unable to get the next page result ,i want to find the button control and get it click through programitically.
please help me
Reply | Email | Delete | Modify | 
Re: hi,please help me.... by Mahesh On May 2, 2009
I am not sure if you can do that using this approach. Since, the control is a server side control, the event has to be fired on the server.

 I am afraid, you may not be able to do that. Unless the website owner provide some kind of function that can be called from the caller applications.
Reply | Email | Delete | Modify | 
HTTP RECEIVE DATA by bug On May 11, 2009
Let me know one thing .

If i want to receive some string from another application, what is the code i have to had in my asp .net page ?

The protocol i want to use is the HTTP , i dont know what function i must use .

Please Help me
Reply | Email | Delete | Modify | 
Unable to connect to reote server by Brian On August 30, 2009
  I am writing a small application to connect to a remote server and obtain information in XML. As a starting point I am using the WeatherTracker example in Microsoft's "Build a Program Now!" book for Visual C# 2008.

  Unfortunately, the example returns the error, "Unable to connect to remote server". When I ctrl-click on the link in the editor, the appropriate XML is obtained from the server (i.e. the URL is valid).

  So, why does it NOT work when called within the code?

Here's a code nippet:

            string feedUrl = "http://weather.service.msn.com/data.aspx?src=vista&wealocations=wc:USWA0367";
            XmlTextReader reader = new XmlTextReader(feedUrl);

            bool firstForecastDone = false;
            string skyImagesRelativeUrl = "Images/";
            int MaxTemp, MinTemp, CurrentTemp, FeelsLike, Humidity, SkyCode;
           
            try
            {
                while (reader.Read())
.
.
.          

Suggestions would be much appreciated
Brian

Reply | Email | Delete | Modify | 
error in paging by aamir On October 9, 2009
hi sir
i m getting the same page again and again i have send the __eventtarget and __eventargumnet value as describe in javascript:_autopostback(controlname,'Page$2'), along with all other data
but it still get the same page.
can you please help me or give me a refrence of a book or anyother thing discuss these topic in depth

thank you
Reply | Email | Delete | Modify | 
unable to connect SSl secured url by Kumar On February 18, 2010
Hi Mahesh,

I am trying to connect a exchange server to retrieve mail using C# which is SSL secure and I am getting "[System.Net.WebException] = {"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."}"error.Please help me with the solutions
Reply | Email | Delete | Modify | 

 Hosted by MaximumASP  |  Found a broken link?  |  Contact Us  |  Terms & conditions  |  Privacy Policy  |  Site Map  |  Suggest an Idea  |  Media Kit
Current Version: 5.2009.6.2
 © 2010  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.