Функции Url escape/unescape в MonoTouch

Я ищу функции удаления URL-адресов и unescape в MonoTouch. По сути, я ищу эквивалент MonoTouch метода stringByReplacingPercentEscapesUsingEncoding, как в следующей строке кода objective-c:

 NSString *args = [(NSString*)[components objectAtIndex:3]
                   stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

Я ожидал, что смогу перевести это на что-то вроде этого:

string args = URL.Unescape(components[3]);

Существуют ли функции escape/unescape URL-адреса в MonoTouch или мне нужно перевернуть мои собственные?

Ответ 1

System.Web.HttpUtility.UrlDecode (string s);

Что находится в System.Web.Services.dll в моноточе.

Ответ 2

Он отсутствует в версии .Net framework, включенной в MonoTouch.

Я считаю, что я получил источник этого кода Google здесь.

Вы можете захотеть найти лицензию для этого, я использовал его для личного приложения для iPhone.

Ответ 3

В дополнение к ответу, Split имеет параметр params Split ('&', '='); выражение, сначала разделенное на, а затем '=', поэтому нечетные элементы - это все значения, которые должны быть закодированы ниже.

    public static void EncodedQueryString(ref string queryString)
    {
        var array=queryString.Split('&','=');
        for (int i = 0; i < array.Length; i++) {
            string part=array[i];
            if(i%2==1)
            {               
                part=System.Web.HttpUtility.UrlEncode(array[i]);
                queryString=queryString.Replace(array[i],part);
            }
        }
    }

Вы должны кодировать только значения в целом.