Проблемы с кодировкой URL-адреса Windows Phone (Windows Phone)
Простой запрос к серверу для получения файла вызывает некоторые проблемы, вот URL,
https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/* AND (жанр, такой как "RoyalJatt.Com)") & sort = name + asc & start =3647 = 21 & count =1& count =
тогда я делаю это,
url = Uri.EscapeUriString(url);
я получил,
https://dc2-vault.myvzw.com/dv/api/user/c107a6db69104a10bc247a28fb81131e/search?query=contentType:audio/*% 20AND% 20 (жанр% 20like% 20'RoyalJatt.Com%20)')&sort имя + возрастанию & начать =1& Count=2147483647
Проблема здесь заключается в следующем,
запрос ищет файл с жанром RoyalJatt.Com%20), который должен был быть RoyalJatt.Com% 20%29
Почему-то опускается ")"
Что я могу сделать, чтобы это исправить?
2 ответа
Вот что я сделал и получил это работает.
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-адресе - это не то же самое, что кодирование 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);
}
}
}