Alamofire valeur non valide autour de 0 caractères
Alamofire.request(.GET, "url").authenticate(user: "", password: "").responseJSON() {
(request, response, json, error) in
println(error)
println(json)
}
C'est ma demande avec Alamofire, pour une certaine demande parfois fonctionne, mais j'ai parfois l':
Optional(Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x78e74b80 {NSDebugDescription=Invalid value around character 0.})
J'ai lu que cela peut être dû à invalid JSON, mais la réponse est un statique de la chaîne json que j'ai validé en JSON validateur comme valide. Il ne contient pas de å ä ö personnages et de HTML.
Pourquoi j'obtiens cette erreur, parfois?
- Une chose que j'aime faire quand je reçois cette erreur est en commentaire le
responseJSON() { ... }
bloc et de le remplacer avec.responseString { _, _, s, _ in println(s) }
. Qui vous permet de voir le json qui est retourné à regarder pour tout bizarre texte qui permettrait de faire unparsible parresponseJSON
- Quel est le code d'état de réponse?
- Je reçois un code d'état 200 et j'ai cette erreur. AHHH. La mort cérébrale dans mon cas :). Je n'ai pas fait de retour JSON à partir du serveur. Qu'elle n'en résout.
- peut-être cela va fonctionner si vous utilisez .Méthode POST.
Vous devez vous connecter pour publier un commentaire.
J'ai également fait face à un même problème. J'ai essayé
responseString
au lieu deresponseJSON
et cela a fonctionné. Je suppose que c'est un bug dansAlamofire
avec de l'utiliser avecdjango
.The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.
alors qu'il est wokring bien surPostman
J'ai eu la même erreur pendant le téléchargement de l'image en plusieurs parties formulaire en Alamofire que j'ai été en utilisant
je l'ai résolu en remplaçant par
Espère que cela aide quelqu'un.
Le même problème m'est arrivé et en fait il a fini par être un problème de serveur depuis le type de contenu n'est pas défini.
Ajoutant
À la demande de la chaîne d'résolu pour moi
Cela peut Vous Aider à
J'ai eu le même message d'erreur. Mais j'ai trouvé la solution pour elle.
NOTE 1: "Il n'est pas Alarmofire erreur", c'est bcouse d'erreur du serveur.
NOTE 2: Vous n'avez pas besoin de changer "responseJSON" à "responseString".
C'est comment j'ai réussi à résoudre le non Valide 3840 Err.
Le journal des erreurs
- Afin de connaître l'Encodage, j'ai dû courir à travers tous les Types d'Encodage:
Si la réponse n'est pas un JSON & tout simplement les cordes en réponse utiliser responseString
Exemple: en cas de connexion/créer un jeton d'API :
J'ai résolu en utilisant cela comme en-tête:
let header = ["Content-Type": "application/json",
"accept": "application/json"]
Peut-être que c'est trop tard mais j'ai résolu ce problème d'une autre manière n'est pas mentionné ici:
Lorsque vous utilisez
.responseJSON()
, vous devez définir l'en-tête de réponse aveccontent-type = application/json
, si non, il va bloquer même si votre corps est un JSON valide. Donc, peut-être que votre en-tête de réponse sont vides ou en utilisant un autre type de contenu.Assurez-vous que votre en-tête de réponse est défini avec
content-type = application/json
à.responseJSON()
dans Alamofire fonctionner correctement.Hé les gars c'est ce que j'ai trouvé mon problème: j'ai été appeler Alamofire par l'intermédiaire d'une fonction d'Authentifier des Utilisateurs: j'ai utilisé la fonction "Connexion Utilisateur" Avec les paramètres qui devraient être appelées à partir du "corps"(e-mail: String, mot de passe: String) Qui serait passé
mon errr était exactement:
optional(alamofire.aferror.responseserializationfailed(alamofire.aferror.responseserializationfailurereason.jsonserializationfailed(erreur de domaine=nscocoaerrordomain code=3840 "valeur invalide environ le caractère 0." userinfo={nsdebugdescription=valeur non valide environ le caractère 0
caractère 0 est la clé ici: le sens de l'appel pour le "e-mail" n'a pas été correspondre les paramètres: Voir le code ci-dessous
func loginUser(e-mail: String, mot de passe: String, terminé: @échapper downloadComplete) {
laissez lowerCasedEmail = e-mail.lowercase()
"e-mail" dans les paramètres de la fonction doit correspondre à la "e-mail" lors de l'analyse, alors cela va fonctionner..je n'ai plus eu l'erreur...Et le caractère 0 était le "e-mail" dans le "corps" de paramètre pour la Alamofire demande:
Espère que cette aide
Erreur a été résolue après l'ajout de l'encodage: JSONEncoding.par défaut avec Alamofire.
Dans mon cas , mon serveur l'URL est incorrecte. Vérifier votre URL du serveur !!
L'application que je travaillais ce matin avait la même erreur. J'ai cru à une erreur du côté serveur depuis que j'ai été incapable de télécharger une image utilisateur.
Cependant, lors de la vérification de mon API, j'ai réalisé que, après l'ajout d'un certificat SSL sur mon site que je n'avais pas mis à jour de l'api.swift Url, les données ont été incapables de poste:
J'ai changé l'URL: https://. Le problème est résolu.
Dans mon cas, j'ai ajouter cette Clé: "Accepter":"application/json" pour mon en-tête de la demande.
Quelque chose comme ceci:
J'espère que cela peut aider quelqu'un.
J'ai été d'envoyer le mauvais type (String) pour le serveur dans mes paramètres (nécessaire pour être un Int).
Je fais face à un même problème et le problème est dans les params.
companyModal.directory_path
est url. il contraint de chaîne à n'importe qui de créer des questions à côté serveur. Pour résoudre ce problème, je dois donner la valeur par défaut qui en font la chaîne de valeur.Vous avez probablement "/" à la fin de votre chemin. Si elle n'est pas en GET, vous ne devriez pas mettre de "/" à la fin, sinon vous obtenez le message d'erreur
Dans mon cas, il y a un supplément de /dans l'URL .
J'ai Changé le type mime de "mov" pour "multipart/form-data".
A fonctionné pour moi.. 🙂