john doe
john doe

Reputation: 9660

QueryString Out of Encoded URL

I have an encoded URL.

http%3a%2f%myurl.test.me%2fSometjing%2fProduct%2fSearch%3fq=Tomato

I am trying to get query string out of the url which is "Tomato". I am using the following code but it returns null.

 var parsedQuery = HttpUtility.ParseQueryString((url));
            Console.Write(parsedQuery["q"]); // null 

Upvotes: 0

Views: 123

Answers (2)

DaCrota
DaCrota

Reputation: 21

The URL needs to decoded first before you can use the HttpUtility.ParseQueryString().

Fair warning though mentioned directly from MSDN.

The ParseQueryString method uses query strings that might contain user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. MSDN.

Upvotes: 0

Andrew Whitaker
Andrew Whitaker

Reputation: 126042

You're missing a few steps. You need to decode the URL, then pull out the query string, and then parse the query string:

string decoded = 
    HttpUtility.UrlDecode("http%3a%2f%2fmyurl.test.me%2fSometjing%2fProduct%2fSearch%3fq=Tomato");

var uri = new Uri(decoded);
var parsedQuery = HttpUtility.ParseQueryString(uri.Query);

Console.WriteLine (parsedQuery["q"]); // Tomato

Also, your encoded URL is a little malformed. The one in your post decoded looks like this:

http:/%myurl.test.me/Sometjing/Product/Search?q=Tomato

I think you just missed a 2f after the % right before myurl.test:

http%3a%2f%2fmyurl.test.me%2fSometjing%2fProduct%2fSearch%3fq=Tomato

Upvotes: 4

Related Questions