2011-03-22 4 views
10

Je recherche des fonctions url escape et unescape dans MonoTouch. Essentiellement, je suis à la recherche de l'équivalent MonoTouch de la méthode stringByReplacingPercentEscapesUsingEncoding, comme dans la ligne de suivi du code c Objectif:Fonctions Url escape/unescape dans MonoTouch

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

Je comptais être capable de traduire cela quelque chose comme ceci:

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

Les fonctions d'échappement d'URL/unescape existent-elles dans MonoTouch ou dois-je lancer la mienne?

Répondre

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

Qui se trouve dans System.Web.Services.dll dans monotouch.

+0

Avez-vous essayé? Il n'apparaît pas dans mon MonoDevelop. – jonathanpeppers

+0

Je ne vois pas l'espace de noms _HttpUtility_ sous _System.Net_ dans MonoDevelop. – BruceHill

+0

Voir ma réponse modifiée. – jonathanpeppers

1

Il n'est pas présent dans la version du framework .Net inclus avec MonoTouch. Je crois que j'ai obtenu la source pour le code here.

Vous voudrez peut-être rechercher la licence pour cela, je l'ai utilisé pour une application iPhone personnelle.

+1

Merci, Jonathan. C'est super. Du message en haut du code, il semble que ce code est open source. C'est exactement ce dont j'avais besoin. Merci encore. – BruceHill

+3

Il est très certainement en monotouch, je sais parce que je l'ai mis là, mais j'ai oublié que nous avons un interne dans System.dll, le public est dans System.Web.Services. –

+0

Je suis content que ce soit là, j'ai appris quelque chose aujourd'hui à coup sûr. – jonathanpeppers

1

En plus de répondre, Split a le paramètre params Split ('&', '='); expression d'abord divisée par & puis '=', les éléments impairs sont toutes les valeurs à coder indiquées ci-dessous.

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); 
      } 
     } 
    } 

Vous devriez encoder uniquement les valeurs en général.