Windows phone URL 编码问题(Windows phone)
Windows phone URL encoding issues(Windows phone)
向服务器发出获取文件的简单请求出现了一些问题,这是 url、
https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/* AND(类型如 'RoyalJatt.Com )')&sort=name+asc&start=1&count=2147483647
然后我这样做,
url = Uri.EscapeUriString(url);
我明白了,
https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/*%20AND%20(genre%20like%20'RoyalJatt.Com%20)')&sort=name+asc&start=1&count=2147483647
这里的问题是,
查询查找类型为 RoyalJatt.Com%20) 的文件,该文件应该是 RoyalJatt.Com%20%29
出于某种原因,它省略了“)”
我该怎么做才能解决这个问题?
好吧,似乎编码数据用于 url 与编码 url 不同!
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace Model_Library
{
[TestClass]
public class test
{
[TestMethod]
public void test2()
{
string url = @"https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/";
string data = @"search?query=" + Uri.EscapeDataString(@"contentType:audio/* AND (genre like 'RoyalJatt.Com )')") + @"&sort=name+asc&start=1&count=2147483647";
string enc = Uri.EscapeUriString(url) + data;
Console.Write(enc);
}
}
}
这是我所做的并使其正常工作。
private readonly static string reservedCharacters = "!*'();:@&=+$,/?%#[]";`
//Neither of Uri.EscapeUriString and Uri.EscapeDataString methods encodes
//the RFC 2396 unreserved characters If you need these encoded then you
//will have to manually encode them
public static string UrlEncode(string value)
{
if (String.IsNullOrEmpty(value))
return String.Empty;
var sb = new StringBuilder();
foreach (char @char in value)
{
if (reservedCharacters.IndexOf(@char) == -1)
sb.Append(@char);
else
sb.AppendFormat("%{0:X2}", (int)@char);
}
return sb.ToString();
}
向服务器发出获取文件的简单请求出现了一些问题,这是 url、
https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/* AND(类型如 'RoyalJatt.Com )')&sort=name+asc&start=1&count=2147483647
然后我这样做,
url = Uri.EscapeUriString(url);
我明白了,
https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/*%20AND%20(genre%20like%20'RoyalJatt.Com%20)')&sort=name+asc&start=1&count=2147483647
这里的问题是,
查询查找类型为 RoyalJatt.Com%20) 的文件,该文件应该是 RoyalJatt.Com%20%29
出于某种原因,它省略了“)”
我该怎么做才能解决这个问题?
好吧,似乎编码数据用于 url 与编码 url 不同!
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace Model_Library
{
[TestClass]
public class test
{
[TestMethod]
public void test2()
{
string url = @"https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/";
string data = @"search?query=" + Uri.EscapeDataString(@"contentType:audio/* AND (genre like 'RoyalJatt.Com )')") + @"&sort=name+asc&start=1&count=2147483647";
string enc = Uri.EscapeUriString(url) + data;
Console.Write(enc);
}
}
}
这是我所做的并使其正常工作。
private readonly static string reservedCharacters = "!*'();:@&=+$,/?%#[]";` //Neither of Uri.EscapeUriString and Uri.EscapeDataString methods encodes //the RFC 2396 unreserved characters If you need these encoded then you //will have to manually encode them public static string UrlEncode(string value) { if (String.IsNullOrEmpty(value)) return String.Empty; var sb = new StringBuilder(); foreach (char @char in value) { if (reservedCharacters.IndexOf(@char) == -1) sb.Append(@char); else sb.AppendFormat("%{0:X2}", (int)@char); } return sb.ToString(); }