URL décoder dans iOS
Je suis en utilisant Swift 1.2 pour développer mon application iPhone et je suis en communication avec un service web http.
La réponse que je reçois est dans la chaîne de requête (format de paires clé-valeur) et l'URL encodée dans .Net
.
Je peux obtenir la réponse, mais la recherche de la bonne façon de décoder l'utilisation de Swift.
Des modèles de réponses est comme suit
status=1&message=The+transaction+for+GBP+12.50+was+successful
Essayé de suivre façon de décoder et d'obtenir la réponse du serveur
//This provides encoded response String
var responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
var decodedResponse = responseString.stringByReplacingEscapesUsingEncoding(NSUTF8StringEncoding)!
Comment puis-je remplacer toutes les URL des caractères d'échappement dans la chaîne?
Le meilleur pour la mise à jour de Swift 2 maintenant plutôt que plus tard. Et c'est vraiment mieux et plus facile à coder.
"remplacer
Oui, je l'ai fait et + est remplacé par un Espace. Mais, vous demandez-vous si d'autres cas particuliers ( + ) peut être là et ne liront PAS la chose exacte que le serveur envoie
Est-il possible de SWIFT 2.0 ?
"remplacer
+
avec " "
, avant de l'utiliser stringByReplacingEscapesUsingEncoding
méthode" quel est Donc le problème? Le faire et voir ce qui se passe.Oui, je l'ai fait et + est remplacé par un Espace. Mais, vous demandez-vous si d'autres cas particuliers ( + ) peut être là et ne liront PAS la chose exacte que le serveur envoie
Est-il possible de SWIFT 2.0 ?
OriginalL'auteur JibW | 2015-10-06
Vous devez vous connecter pour publier un commentaire.
Pour coder et décoder les url de créer cette extension, quelque part dans le projet:
Swift 2.0
Swift 3.0
Swift 4.1
addingPercentEncoding
etremovingPercentEncoding
retourOptional
chaînes le type de retour doit êtreString?
.Encore plus simple que le Apple guide. Merci.
C'est très incorrect. Le jeu de caractères constantes n'ont pas été faites pour encoder l'URL, et pour cette raison, vous ne pouvez utiliser aucun des ensembles prédéfinis pour encoder l'URL. Vous devrez en créer un nouveau. Votre code ne sera pas coder
&
et=
correctement, par exemple. Décodage travail même si.OriginalL'auteur Vyacheslav
Swift 2 et plus tard (xCode 7)
OriginalL'auteur 米米米
La
stringByReplacingEscapesUsingEncoding
méthode est de se comporter correctement. Le"+"
personnage est pas partie de pour cent de codage. Ce serveur est de l'utilisation erronée; il doit être à l'aide d'un pour cent des caractères d'échappement d'espace ici (%20
). Si, pour une réponse donnée, vous voulez des espaces où vous voyez"+"
caractères, vous avez juste à contourner le comportement de serveur en effectuant la substitution de vous-même, comme vous le faites déjà.+
est vraiment pour: stackoverflow.com/a/2700981/341994Salut matt, oui, je sais que l'utilisation du serveur + au lieu de %de 20 à représenter l'espace dans la réponse (codé chaîne de requête-réponse)... Java gère cette situation et de décoder correctement "URLDecoder.décoder(responseString, "UTF-8");"... j'ai ajouté mon chemin fait de travailler en vertu des modifications dans ma question, mais en regardant si il n'y a aucun droit de l'avant de la langue méthode de l'API disponible pour décoder correctement plutôt que de me remplacer + avec l'espace, avant d'effectuer stringByReplacingEscapesUsingEncoding... vous dites que si ce type de méthode n'est PAS disponible dans SWIFT?
OriginalL'auteur matt
Dans mon cas, j'ai BESOIN d'un signe plus ("+") un signal de numéro de téléphone dans les paramètres de chaîne de requête, comme "+55 11 99999-5555". Après, j'ai découvert que le swift3 (xcode 8.2) de l'encodeur ne pas coder "+" plus de signal, mais l'espace, j'ai dû faire appel à une solution de contournement après l'encodage:
Swift 3.0
OriginalL'auteur Caiçara
Dans Swift 3
dans votre code d'accès ci-dessous
OriginalL'auteur Rob-4608