2013-10-28 8 views
8

Sobald ich eine Anfrage an einen JSON Ressource auslösen ich folgendes:AFNetworking 2.0 und Response-Serialisierung Optionen

The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x1d87a2c0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.} 

Das Problem ist, dass dort, wo soll ich die Fragmente in AFNetworking 2.0 erlauben gesetzt?

UPDATE:

Meine Klasse ist eine Unterklasse von AFHTTPSessionManager. Ich habe bereits einen JSONResponseSerializer erstellt und es funktioniert auch nicht.

JSON zurückgegeben wird, wie folgt:

[0] (null) @"NSDebugDescription" : @"Invalid value around character 0." 

RESPONSE FROM WEB SERVER::

[{"StoryId":1,"Title":"The big red dog","Abstract":"There was a big red dog and the dog was very big","IsFeatured":true}] 

RESPONSE STATUS VON

[{"StoryId":1,"Title":"The big red dog","Abstract":"There was a big red dog and the dog was very big","IsFeatured":true}] 

-(instancetype) initWithBaseURL:(NSURL *)url 
{ 
    NSURL *base = [NSURL URLWithString:@"URL to the web service that returns the json"]; 
    self = [super initWithBaseURL:base]; 

    AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 

    [self setResponseSerializer:responseSerializer]; 

    return self; 
} 

Der Fehler der folgenden zurückgeführt wird WEBSERVER:

HTTP/1.1 200 OK 
Server: Microsoft-IIS/7.0 
X-Powered-By: ASP.NET 
Content-Type: application/json;charset=utf-8 
X-AspNetMvc-Version: 3.0 
Connection: close 
Date: Mon, 28 Oct 2013 20:02:21 GMT 
Content-Length: 121 
Cache-Control: private 
X-AspNet-Version: 4.0.30319 

[{"StoryId":1,"Title":"The big red dog","Abstract":"There was a big red dog and the dog was very big","IsFeatured":true}] 
+0

Das ist ein Problem mit der Antwort des Webservers, ** nicht ** mit AFNetworking. – akashivskyy

+0

Die Antwort ist gültig! Ich habe gerade den JSON validiert und es ist gültig, dass JSON zurückgegeben wird. –

+0

Ich habe nicht gesagt, es ist * ungültig *. Ich sagte, dass das * Problem dadurch verursacht wird *. JSON-Daten sind in der Regel in einem Array oder Objekt enthalten. @Wain hat Recht, Sie müssen AFNetworking sagen, welche Optionen 'NSJSONSerialization' verwenden soll, um die JSON-Daten zu lesen. – akashivskyy

Antwort

7

Sie benötigen eine eigene Instanz von AFJSONResponseSerializer mit serializerWithReadingOptions: und konfigurieren Sie Ihr System zu erstellen, es zu benutzen (anstelle der Standard-JSON-Antwort Serializer).

+0

Bitte sehen Sie meine aktualisierte Frage! Ich habe den AFJSONResponseSerializer hinzugefügt, aber immer noch keinen Nutzen! –

+0

Ihr JSON sieht nicht so aus, als hätte es Fragmente. Sind Sie sicher, dass Ihre benutzerdefinierte Klasse verwendet wird? – Wain

+0

... und sind Sie sicher, dass die Antwort nicht beschädigt oder in etwas anderem eingeschlossen ist? – akashivskyy

0

Ich habe das gleiche Problem zuvor. Und nach ein paar Stunden suchen und lesen, habe ich etwas gefunden:

self.responseSerializer = [AFHTTPResponseSerializer Serializer]; self.responseSerializer.acceptableContentTypes = [NSSet setWithObjects: @ "application/json; charset = UTF-8", nil];

versuchen Sie es und viel Glück!

Verwandte Themen