我有一个编码的网址。
http%3a%2f%myurl.test.me%2fSometjing%2fProduct%2fSearch%3fq=Tomato
我正在尝试从网址中获取查询字符串,即" Tomato"。我使用以下代码但它返回null。
var parsedQuery = HttpUtility.ParseQueryString((url));
Console.Write(parsedQuery["q"]); // null
答案 0 :(得分:4)
你错过了几步。您需要解码URL,然后提取查询字符串,然后解析查询字符串:
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
此外,您的编码网址有点格式错误。你解码后的那个看起来像这样:
HTTP:/%myurl.test.me/Sometjing/Product/Search?q=Tomato
我认为您在2f
之前的%
之后错过了myurl.test
:
的http%3A%2F%2fmyurl.test.me%2fSometjing%2fProduct%2fSearch%3fq =番茄
答案 1 :(得分:0)
在您使用HttpUtility.ParseQueryString()
之前,需要先解码网址。
虽然直接从MSDN提到了公平警告。
ParseQueryString方法使用可能包含用户输入的查询字符串,这是一种潜在的安全威胁。默认情况下,ASP.NET网页验证用户输入不包含脚本或HTML元素。 MSDN