Cocoa Error 3840 when POST Request with AFNetworking 2

11,443

Solution 1

I solved it by adding following line of code

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

Solution 2

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!

Solution 3

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

Solution 4

I solved it by adding following line of code

manager.requestSerializer = [AFJSONRequestSerializer serializer];

Share:
11,443
Kiattisak Anoochitarom
Author by

Kiattisak Anoochitarom

Updated on June 22, 2022

Comments

  • Kiattisak Anoochitarom
    Kiattisak Anoochitarom about 2 years

    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);
              }
          }];
    }
    
  • Leonly91
    Leonly91 over 8 years
    Solve my problem,Thanks.