【问题标题】:How to parse a URL string with multiple parameter values?如何解析具有多个参数值的 URL 字符串?
【发布时间】:2011-12-22 01:44:19
【问题描述】:

我正在制作这个奇怪的 web 服务,它将其参数作为 URL 中的查询参数。问题是,一个参数可以有多个值。类似于:

http://mydomain/Service?operation=ActivateUser&id=1&id=2&id=3

在这种情况下,我需要激活 ID 为 1、2 和 3 的 3 个用户。更糟糕的是,可能是这样(我认为,规范有点模糊,稍后会澄清):

http://mydomain/Service?operation=ActivateUser&id=1&operation=DeleteUser&id=2

在这种情况下,我需要激活用户 1 并删除用户 2。

所以我真的需要一个 URL 解析器来保留参数的顺序。 .NET 的默认 Request.QueryString 不这样做,它只是用逗号分隔值并按顺序排列。

除了我自己用 ?、& 和 = 拆分原始 URL 之外,还有更好的方法吗?

【问题讨论】:

  • 你能改变分隔符吗?例如。 op=ActivateUser&ids=1|2|3?
  • 不,不幸的是,这种表述是强加给我的。

标签: asp.net .net parsing url


【解决方案1】:

听起来Request.QueryString.GetValues(即NameValueCollection.GetValues)就是您所追求的。它将返回它为给定键找到的值的字符串数组,并按照它们在 url 中的顺序..

给定http://www.site.com/page.aspx?keyid=1&keyid=2&keyid=3

string[] keys = Request.QueryString.GetValues("keyid");

keys[0] would be "1"
keys[1] would be "2"
keys[2] would be "3"

【讨论】:

  • 不错!现在唯一的问题可能是我的第二个例子。下周看看这是否是一个真正的问题。
  • @Vilx- 应该还可以。您必须单独检查操作查询字符串,然后我假设您将对数组中的第二项采取行动。
  • 但是如果“操作”有2个值,“id”有4个值,我怎么知道哪个id去哪个操作?
  • @Vilx- 啊。明白了。没有将其视为多种操作的可能性。那一个可能更难。那时可能必须手动解析。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多