Что я могу использовать на .NET CF в качестве замены HttpUtility.UrlEncode - PullRequest
5 голосов
/ 25 мая 2009

Мне нужно переместить код .NET в Compact Framework. Этот код использует HttpUtility.UrlEncode для кодирования параметров запроса, но System.Web недоступен в CF. Что я могу использовать вместо этого?

Ответы [ 4 ]

12 голосов
/ 26 мая 2009

Использовать Uri.EscapeDataString . Это почти эквивалентно, и, возможно, лучше в любом случае, и включено в NetCF.

Подробнее об их различиях .

0 голосов
/ 12 марта 2018

Я использовал Uri.EscapeUriString вместо этого, поскольку Uri.EscapeDataString кодирует полную строку, а не только параметры, например

http://website.com/a/abc{d}d 

С EscapeDataString он преобразуется в:

http%3A%2F%2Fwebsite.com%2Fa%2Fabc%7Bd%7Dd

И с Uri.EscapeUriString это правильно превращается в это:

http://website.com/a/abc%7Bd%7Dd

0 голосов
/ 26 мая 2009

Вам, вероятно, придется свернуть свой собственный или, что еще лучше, чит. Используя рефлектор, вы быстро увидите, что существует несколько перегруженных методов для UrlEncode, вызывающих версию, которая ожидает, что параметр строки в конечном итоге в итоге преобразует строку в массив байтов и вызывает внутренний метод.

Редактировать: фрагмент кода удален в случае нарушения авторских прав ...

0 голосов
/ 25 мая 2009

Вы можете посмотреть на реализацию mono (опционально упрощено). Я не знаю, сколько из зависимостей вы должны были бы внести, хотя. Это может или не может быть осуществимо.

...