Encoding parameters for a URL

user70192 picture user70192 · Feb 23, 2011 · Viewed 92.5k times · Source

I have a Silverlight application that is building a URL. This URL is a call to a REST-based service. This service expects a single parameter that represents a location. The location is in the form of "city, state". To build this URL, I'm calling the following code:

string url = "http://www.example.com/myService.svc/";
url += HttpUtility.UrlEncode(locationTextBox.Text);

If a user enters "chicago, il" into locationTextBox, the result looks like this:

http://www.example.com/myService.svc/chicago%2c+il

In reality though, I was kind of expecting the URL to look like;

http://www.example.com/myService.svc/chicago,%20il

When testing my service via the browser URL, the one I am expecting works. However, the URL that is being generated is not working. What am I doing wrong?

Answer

Alexei Levenkov picture Alexei Levenkov · Feb 23, 2011

I would recommend Uri.EscapeDataString instead of using HttpUtility functions. See discussion in Server.UrlEncode vs. HttpUtility.UrlEncode.