Я видел несколько постов, в которых говорится об использовании несоответствующего Uris, но ни один из них не дал хорошего ответа.Я пишу элемент управления Windows Phone, и он должен запрашивать данные ATOM с помощью HTTP GET.URL должен содержать символы% 3d (знак равенства).Это не подлежит обсуждению, поскольку это сторонний сервис, который я не могу контролировать.Представьте себе URL-адрес, подобный следующему:
http://host.com? Arg1 = val1 & arg = val2% 3d
Я использую WebClient с DownloadStringAsync, но он принимает только объекты Uri, а не URL в строках.Объект Uri автоматически экранирует эти символы и отправляет:
http://host.com? Arg1 = val1 & arg = val2 =
Это не удалось.Есть устаревший аргумент конструктора «UserExcaped», который мне нужен, но он недоступен.Я боюсь, что мой единственный вариант - реализовать собственный метод загрузки строк с использованием необработанного сокета и минимальной поддержки HTTP.
Есть еще мысли?Помощь очень ценится !!
ОБНОВЛЕНИЕ <pre><code>
string apps = "http://blah.com/api?prev=AAAAAAA%3d&next=BBBBBBB";
var u = new Uri(apps);
string apps2 = u.ToString();
Debug.Assert(apps == apps2); // That %3d will always be converted to an equals sign
Я также должен отметить, что если я попытаюсь быть умным с помощью кодированияпроцент как% 25 (так что «prev = AAAAAA% 253d & next = BBBBB»), тогда я получаю точную буквенную строку с% 25 до сих пор нетронутым!Это просто% 3d, что агрессивно настроен на преобразование в знак равенства.