AFNetworking 2.0 and Response Serialization Options

john doe picture john doe · Oct 28, 2013 · Viewed 8.7k times · Source

As soon as I trigger a request to a JSON resource I get the following:

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.}

The problem is that where should I set the allow fragments in AFNetworking 2.0?

UPDATE:

My class is a sub class of AFHTTPSessionManager. I already have created a JSONResponseSerializer and it also does not work.

JSON being returned is as follows:

   [{"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;
}

The error returned is the following:

[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 FROM WEB SERVER:

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}]

Answer

Wain picture Wain · Oct 28, 2013

You need to create your own instance of AFJSONResponseSerializer using serializerWithReadingOptions: and configure your system to use it (in place of the default JSON response serialiser).