Formater un plist pour une URL ?
Salut tout le monde,
Sur le bout de code sur lequel je travail actuellement j'ai besoin d'envoyer un plist dans une URL avec les %truc pour remplacer les caractères spéciaux.
En gros je dois arriver à un truc comme ça :
J'ai à la base une NSURL de http://totoserver.com/ et l'idée est d'utiliser URLWithString:relativeToURL: pour créer une nouvelle URL au besoin avec en NSString les arguments déjà formaté.
Pour ce qui est du formatage je comptais utiliser stringWithFormat: pour faire en sorte que ne soit échapé que les valeurs du plist et non mon ? entre bidule et input=
Sauf que ça foire et je me retrouve avec des escape différent (%253C%3Fxml%2520version=%25221.0%2522%2520encoding=%2522UTF-8) et que mon URL n'est pas accepté.
Pour l'échappement j'utilise stringByAddingPercentEscapesUsingEncoding: avec ASCII/UTF8 ça rend pareil
Et la NSString de base contenant mon dict est généré de cette manière :
Si quelqu'un à une idée je suis preneur :-)
Sur le bout de code sur lequel je travail actuellement j'ai besoin d'envoyer un plist dans une URL avec les %truc pour remplacer les caractères spéciaux.
En gros je dois arriver à un truc comme ça :
http://totoserver.com/machin/bidule?input=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Cplist+version...
J'ai à la base une NSURL de http://totoserver.com/ et l'idée est d'utiliser URLWithString:relativeToURL: pour créer une nouvelle URL au besoin avec en NSString les arguments déjà formaté.
Pour ce qui est du formatage je comptais utiliser stringWithFormat: pour faire en sorte que ne soit échapé que les valeurs du plist et non mon ? entre bidule et input=
Sauf que ça foire et je me retrouve avec des escape différent (%253C%3Fxml%2520version=%25221.0%2522%2520encoding=%2522UTF-8) et que mon URL n'est pas accepté.
Pour l'échappement j'utilise stringByAddingPercentEscapesUsingEncoding: avec ASCII/UTF8 ça rend pareil
Et la NSString de base contenant mon dict est généré de cette manière :
NSString *input = [[NSString alloc] initWithData:[NSPropertyListSerialization dataWithPropertyList:dict format:NSPropertyListXMLFormat_v1_0 options:0 error:&err] encoding:NSUTF8StringEncoding];<br />
Si quelqu'un à une idée je suis preneur :-)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le résultat que tu obtiens est manifestement le résultat d'un double encodage par "percent escapes", %25 étant l'encodage du signe "%" lui-même.
Il n'y a pas une méthode que tu utilises qqpart dans ton code qui rajouterait toute seule le percentEscape ?
Si tu construis ton URL uniquement sous forme de NSString avec stringWithFormat, et la transforme en URL ensuite avec URLWithString, ça donne quoi ?
En reprenant le code en attendant une réponse j'ai un truc plus fonctionnel. Mes URL sont OK simplement le serveur n'interprète pas l'argument comme il faut car les / ne sont pas échappé (ceux du doctype par exemple).
Je vais voir pour les remplacer à la main du coup :-/
EDIT : En fait c'est tous les caractère type ? = & etc qui ne sont pas échappé :-/
Je vais corriger mon code avec ça, merci de l'info