Alamofire.request(.GET, "url").authenticate(user: "", password: "").responseJSON() {
(request, response, json, error) in
println(error)
println(json)
}
Dies ist meine Anfrage bei Alamofire, für eine bestimmte Anfrage funktioniert es manchmal, aber manchmal bekomme ich:
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.})
Ich habe gelesen, dass dies an ungültigem JSON liegen kann, aber die Antwort ist eine statische JSON-Zeichenfolge, die ich im JSON-Validator als gültig validiert habe. Es enthält å ä ö Zeichen und etwas HTML.
Warum bekomme ich diesen Fehler manchmal?
responseJSON() { ... }
Block zu kommentieren und durch zu ersetzen.responseString { _, _, s, _ in println(s) }
. Das können Sie die json sehen, die Look für jeden ungeraden Text zurückgegeben wird , die es unparsible durch machen würderesponseJSON
Antworten:
Ich stand auch vor dem gleichen Problem. Ich habe es
responseString
stattdessen versuchtresponseJSON
und es hat funktioniert. Ich denke, das ist ein FehlerAlamofire
bei der Verwendung mitdjango
.quelle
Ich habe beim Hochladen eines Bildes in mehrteiliger Form in Alamofire den gleichen Fehler erhalten wie beim Hochladen
Ich habe durch Ersetzen durch behoben
Hoffe das hilft jemandem.
quelle
Möge dies Ihnen helfen
quelle
Das gleiche Problem ist mir passiert und es war tatsächlich ein Serverproblem, da der Inhaltstyp nicht festgelegt wurde.
Hinzufügen
Um die Anforderungskette hat es für mich gelöst
quelle
In meinem Fall war meine Server-URL falsch. Überprüfen Sie Ihre Server-URL!
quelle
Ich habe den gleichen Fehler bekommen. Aber ich habe die Lösung dafür gefunden.
HINWEIS 1: "Es handelt sich nicht um einen Alarmofire-Fehler", sondern um einen Serverfehler.
HINWEIS 2: Sie müssen "responseJSON" nicht in "responseString" ändern.
quelle
Auf diese Weise konnte ich den ungültigen 3840-Fehler beheben.
Das Fehlerprotokoll
Um die Codierung zu kennen, musste ich alle Codierungstypen durchlaufen:
Wenn die Antwort kein JSON ist und nur eine Zeichenfolge in der Antwort, verwenden Sie responseString
Beispiel : Bei Anmeldung / Token-API erstellen:
quelle
Ich habe dies als Header gelöst:
let header = ["Content-Type": "application/json", "accept": "application/json"]
quelle
In meinem Fall gab es ein zusätzliches / in der URL.
quelle
Vielleicht ist es zu spät, aber ich habe dieses Problem auf eine andere Weise gelöst, die hier nicht erwähnt wird:
Wenn Sie verwenden
.responseJSON()
, müssen Sie den Antwortheader so festlegencontent-type = application/json
, dass er abstürzt, selbst wenn Ihr Body ein gültiger JSON ist. Vielleicht ist Ihr Antwortheader leer oder verwendet einen anderen Inhaltstyp.Stellen Sie sicher , dass Ihre Antwort - Header wird mit
content-type = application/json
an.responseJSON()
richtig in Alamofire Arbeit.quelle
Hey Leute, das ist mein Problem: Ich habe Alamofire über eine Funktion zum Authentifizieren von Benutzern aufgerufen: Ich habe die Funktion "Login User" mit den Parametern verwendet, die vom "body" aufgerufen werden (E-Mail: String, Passwort: String) Das würde übergeben werden
Mein Fehler war genau:
optional (alamofire.aferror.responseserializationfailed (alamofire.aferror.responseserializationfailurereason.jsonserializationfailed) (Fehlerdomäne = nscocoaerrordomain code = 3840 "ungültiger Wert um Zeichen 0." userinfo = {nsdebugdescription = ungültiger Wert um Zeichen 0
Zeichen 0 ist hier der Schlüssel: Dies bedeutet, dass der Aufruf für die "E-Mail" nicht mit den Parametern übereinstimmte: Siehe den folgenden Code
func loginUser (E-Mail: String, Passwort: String, abgeschlossen: @escaping downloadComplete) {let lowerCasedEmail = email.lowercased ()
"email" in den Funktionsparametern muss mit dem let "email" beim Parsen übereinstimmen, dann funktioniert es. Ich habe den Fehler nicht mehr erhalten ... Und Zeichen 0 war die "email" im "body" -Parameter für die Alamofire-Anfrage:
Hoffe das hilft
quelle
Ich habe den falschen Typ (String) in meinen Parametern an den Server gesendet (musste ein Int sein).
quelle
Fehler nach dem Hinzufügen der Codierung behoben: JSONEncoding.default mit Alamofire.
quelle
Die Anwendung, an der ich heute Morgen gearbeitet habe, hatte den gleichen Fehler. Ich habe geglaubt, dass es sich um einen serverseitigen Fehler handelt, da ich kein Benutzerbild hochladen konnte.
Beim Überprüfen meiner benutzerdefinierten API stellte ich jedoch fest, dass nach dem Hinzufügen eines SSL-Zertifikats zu meiner Website, dass ich die api.swift-URLs nicht aktualisiert hatte, die Daten nicht veröffentlicht werden konnten:
Ich habe die URLs in https: // geändert. Problem gelöst.
quelle
In meinem Fall muss ich diesen Schlüssel hinzufügen: "Accept": "application / json" zu meiner Header-Anfrage.
Etwas wie das:
Ich hoffe, dass dies jemandem helfen kann.
quelle
Ich stehe vor dem gleichen Problem und das Problem liegt in den Parametern.
companyModal.directory_path
ist url. Es wurde von einem String zu einem anderen gezwungen, der Probleme auf der Serverseite verursacht. Um dieses Problem zu beheben, muss ich einen Standardwert angeben, der ihn zu einem Zeichenfolgenwert macht.quelle
Wahrscheinlich haben Sie "/" am Ende Ihres Weges. Wenn es sich nicht um eine GET-Anforderung handelt, sollten Sie am Ende nicht "/" setzen, da sonst der Fehler angezeigt wird
quelle
Ich habe mimeType von "mov" in "multipart / form-data" geändert.
Arbeitete für mich .. :)
quelle
Für meinen Fall:
Ich habe den Raum vorher
\
(nachherBearer
) vergessenquelle
In meinem Fall war der Fehler auf eine doppelte E-Mail zurückzuführen. Sie können Ihre API beim Postboten erneut überprüfen, um festzustellen, ob die Antwort dort in Ordnung ist oder nicht.
quelle