C#: URLEncode and URLDecode?
Often one needs to make a call to a webserver in .NET, and just as often there is Querystring data that needs to be sent along with this request. Thanksfully .NET has a great WebClient class in System.net.WebClient. But you can’t just add the querystring data into your URL like such:
Wrong: WebClient.DownloadFile("http://www.daveamenta.com/file.aspx?mydata=this is a string that I need to send to the server?");
The data needs to be encoded so that the server will not misinterpret the data. This is an example of using an encoded string:
Right: WebClient.DownloadFile("http://www.daveamenta.com/file.aspx?mydata=this+is+a+string+that+I+need+to+send+to+the+server%3F");
The second string is encoded properly, this way the webserver will properly parse that last ?. This was done using the URLEncode function, .NET has built-in classes for this–but they are a bit hidden. They’re kept in the System.Web namespace. This means that if you are working with .NET on the desktop side, as opposed to ASP.NET, you’ll need to Add a Reference to System.Web.dll. Once you do, you’ll see new classes in System.Web that you can use for many things.
Using URLEncode in C#:
WebClient.DownloadFile( "http://www.daveamenta.com/file.aspx?mydata=" + System.Web.HttpUtility.UrlEncode( "this is a string that I need to send to the server?" ) );
It is unlikely you will have much use for URLDecode in a C# application, but it is applied the same way.
What exactly is URLEncode?
URLEncode returns a string in which all non-alphanumeric characters other than – (hyphen) _ (underscore), and . (period) have been replaced with a percent (%) sign followed by two hex digits that correspond to the charactor code and spaces encoded as plus (+) signs. Spaces can alternatively be encoded as %20. 20 is (16*2)+(1*0)=32 in decimal, which is the ASCII code for space.
URLDecode will reverse this operation.

[...] Make sure to URLEncode each field that is [...]
Hi,
I tried this, but System.Web namespace doesn’t contain HttpUtility. Is this only available for asp.net projects? How can I use this for Windows forms application?
Thanks,
Moazzam
Moazzam -
You’ll need to add the System.Web component to your project, the System.Web namespace without System.Web.dll will not contain the HttpUtility. The library is intended for ASP.NET but comes with the .net framework and will work just fine.