Tom*_*len 26 c# asp.net postdata query-string
使用以下代码:
string q = "userID=16555&gameID=60&score=4542.122&time=343114";
Run Code Online (Sandbox Code Playgroud)
什么是最简单的解析值的方法,最好不要编写我自己的解析器?我正在寻找具有相同功能的东西Request.querystring["gameID"]
.
Chr*_*ain 68
非常简单...使用HttpUtility.ParseQueryString方法.
未经测试,但这应该工作:
var qs = "userID=16555&gameID=60&score=4542.122&time=343114";
var parsed = HttpUtility.ParseQueryString(qs);
var userId = parsed["userID"];
// ^^^^^^ Should be "16555". Note this will be a string of course.
Run Code Online (Sandbox Code Playgroud)
Adi*_*dil 17
你可以像这样使用linq.
string query = "id=3123123&userId=44423&format=json";
Dictionary<string,string> dicQueryString =
query.Split('&')
.ToDictionary(c => c.Split('=')[0],
c => Uri.UnescapeDataString(c.Split('=')[1]));
string userId = dicQueryString["userID"];
Run Code Online (Sandbox Code Playgroud)
编辑
如果您可以使用HttpUtility.ParseQueryString那么这将是一个很多更直接和它不会是区分大小写如在LINQ的情况.
如前面的每个答案中所述,如果您处于可以向System.Web库添加依赖项的上下文中,则使用HttpUtility.ParseQueryString是有意义的。(作为参考,相关的源可以在Microsoft参考源中找到)。但是,如果这不可能,我想对Adil的答案提出以下修改,以解决注释中涉及的许多问题(例如区分大小写和重复的键):
var q = "userID=16555&gameID=60&score=4542.122&time=343114";
var parsed = q.TrimStart('?')
.Split(new[] { '&' }, StringSplitOptions.RemoveEmptyEntries)
.Select(k => k.Split('='))
.Where(k => k.Length == 2)
.ToLookup(a => a[0], a => Uri.UnescapeDataString(a[1])
, StringComparer.OrdinalIgnoreCase);
var userId = parsed["userID"].FirstOrDefault();
var time = parsed["TIME"].Select(v => (int?)int.Parse(v)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
如果你想避免需要使用上的System.Web依赖HttpUtility.ParseQueryString,您可以使用Uri
扩展方法ParseQueryString
中发现的System.Net.Http
。
请注意,您必须将响应主体转换为有效主体,Uri
这样才能ParseQueryString
正常工作。
另请注意,在MSDN文档中,此方法是Uri类的扩展方法,因此您需要引用程序集System.Net.Http.Formatting(位于System.Net.Http.Formatting.dll中)。我尝试通过名称为“ System.Net.Http.Formatting”的nuget软件包进行安装,并且工作正常。
string body = "value1=randomvalue1&value2=randomValue2";
// "http://localhost/query?" is added to the string "body" in order to create a valid Uri.
string urlBody = "http://localhost/query?" + body;
NameValueCollection coll = new Uri(urlBody).ParseQueryString();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36777 次 |
最近记录: |