我需要在URI中保留分号(不要转义)。最终网址看起来像这样:
http://dontclick.com?Product=CON&Properties=color;price;位置
我一直在搞弄UriBuilder,但似乎无法保留分号。
它一直在转义“;”为“%3d”
string url = "http://dontclick.com";
string product = "CON";
List<string> props = new List<string>{"color", "price", "location"};
var uriBuilder = new UriBuilder(url);
var paramValues = HttpUtility.ParseQueryString(uriBuilder.Query);
paramValues.Add("Product", product);
paramValues.Add("PropertyNames", string.Join(";", props));
uriBuilder.Query = paramValues.ToString();
string finalURL = uriBuilder.Query.ToString();
Console.WriteLine(finalURL);
//OUTPUT:
//http://dontclick.com?Product=CON&PropertyNames=color%3dprice&3dlocation
有人可以帮我保留分号吗?
编辑 关于为什么为什么需要分号,我有一些评论,因为它们是非法字符。
答案:这是URL所需要的-我无法控制它。我正在查询一个外部站点(我有自己的加密密钥供访问),该站点将根据参数返回一个XML文件。在示例中,它们明确告诉我们使用分号分隔参数。当我使用分号时-它可以工作,如果我让URL将分号编码为%3d-则不起作用。
不幸的是,我无法控制
答案 0 :(得分:3)
根据URL specification(CFG在第15/16页上),分号是URL的非法字符,因此将其编码掉。
您尝试使用的服务设计不佳,或者您尝试做一些本不该做的事情。
但是,要回答您的问题:
您可以字符串替换finalURL:
{{1}}
但同样,这里有些闻起来很时髦。你能告诉我们为什么需要这个分号吗?