该UriBuilder.Query属性"包含URI中包含的任何查询信息." 根据文档,"查询信息根据RFC 2396进行转义."
基于此,并且由于此属性是可写的,我假设在设置它时,System.UriBuilder将解析您的查询字符串,并根据RFC 2396转义(url编码).特别是,{和}不在非保留字符集中,所以他们应该根据RFC 2396的第9页进行转义.但是,似乎System.UriBuilder没有做任何逃避.
我是否需要手动Server.URLEncode params,还是有办法System.UriBuilder处理编码?
这是我的示例代码.你可以在ideone.com上运行它,看看确实没有URL编码.
using System;
public class Test
{
public static void Main()
{
var baseUrl = new System.Uri("http://www.bing.com");
var builder = new System.UriBuilder(baseUrl);
string name = "param";
string val = "{'blah'}";
builder.Query = name + "=" + val;
// Try several different ouput methods; none will be URL encoded
Console.WriteLine(builder.ToString());
Console.WriteLine(builder.Uri.ToString());
Console.WriteLine(builder.Query);
}
}
Run Code Online (Sandbox Code Playgroud)
spe*_*der 13
builder.Uri.AbsoluteUri
Run Code Online (Sandbox Code Playgroud)
是你正在寻找的机器人,在你的情况下,返回
http://www.bing.com/?param=%7B'blah'%7D
鉴于困难知道是否&,+或=符号应编码与否,它可能会更好,当你分配到做自己的转义.Query财产.
| 归档时间: |
|
| 查看次数: |
6276 次 |
| 最近记录: |