Kiattisak Anoochitarom
Kiattisak Anoochitarom

Reputation: 2157

Cocoa Error 3840 when POST Request with AFNetworking 2

I call this function and return Cocoa Error 3840 every time. I try to debug and fix it and it error when request rather than when parse the result


I found this error in failure blocks when request.

Error Domain=NSCocoaErrorDomain Code=3840 "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=0x109230960 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not et.}
2013-11-01 12:09:30.925 MagicBox[87431:70b] The operation couldn’t be completed. (Cocoa error 3840.)

That's my code Thanks in Advance.

- (void)loginWithUserName:(NSString *)userName
             Password:(NSString *)password
           orFacebook:(NSString *)facebookID
    withResponseBlock:(ResponseBlock)responseBlock {

if (!userName && !facebookID) {
    NSError *error = [NSError errorWithDomain:@"Missing Parameters"
                                         code:400
                                     userInfo:@{ NSLocalizedDescriptionKey : @"Username or FacebookID is required"}];
    responseBlock(error, nil);
}

NSDictionary *params;

if (facebookID) {
    params = @{ @"fb_id": facebookID };
} else {
    params = @{ @"username": userName,
                @"password": password };
}

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSString *loginURL = [self requestWithPath:@"/api/login"];
[manager POST:loginURL
   parameters:params
constructingBodyWithBlock:nil
      success:^(AFHTTPRequestOperation *operation, id responseObject) {
          if (responseBlock) {
              responseBlock(nil, responseObject);
          }
      }
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          if (responseBlock) {
              responseBlock(error, nil);
          }
      }];
}

Upvotes: 4

Views: 11494

Answers (4)

HunTer DRF
HunTer DRF

Reputation: 191

Had been stuck with the same problem.

I solved it by this:

    self.requestSerializer = [AFJSONRequestSerializer serializer];

i.e. double check whether the AFHTTPRequestOperationManager uses correct request serializer.

Hope this can help you!

Upvotes: 4

Zero.D.Saber
Zero.D.Saber

Reputation: 371

I solved it by adding following line of code

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

Upvotes: 17

Anooj VM
Anooj VM

Reputation: 2633

I solved it by adding following line of code

manager.requestSerializer = [AFJSONRequestSerializer serializer];

Upvotes: 2

kevinl
kevinl

Reputation: 4214

I solved this by making sure the returned data is in the correct serialization with google spreadsheets XML response (instead of JSON)

manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

Upvotes: 3

Related Questions