2014-10-07 15 views
21

Sto usando biblioteca AFNetworking di inviare i dati sul server utilizzando il metodo POST.errore di dominio = NSCocoaErrorDomain codice = 3840 "L'operazione non può essere completata utilizzando AFNetworking

seguito è il mio codice

- (void) callLoginAPI:(NSDictionary *)dictProfile{ 
    // 1 
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:[dictProfile valueForKey:@"name"], @"username", 
                    [dictProfile valueForKey:@"first_name"],@"first_name", 
                    [dictProfile valueForKey:@"last_name"],@"last_name", 
                    [dictProfile valueForKey:@"email"],@"email", 
                    [dictProfile valueForKey:@"birthday"],@"dob", 
                    [dictProfile valueForKey:@"gender"],@"gender", 
                    [[dictProfile valueForKey:@"location"] valueForKey:@"name"],@"location", 
                    [dictProfile valueForKey:@"timezone"],@"timezone", 
                    @"",@"language", 
                    [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large",[dictProfile valueForKey:@"id"]],@"profile_pic_url", 
                    @"",@"cover_pic_url",nil]; 



    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 



    [manager POST:@"http://10.1.81.35:8000/api/login/" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"JSON: %@", responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 
} 

ma mi sono seguente errore in risposta

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=0x797f2620 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.} 

non riesco a capire qual è il problema con il codice.

risposta

42

Il problema deriva dall'analisi della risposta. Si sta tentando di deserializzare una risposta JSON (che DEVE essere contenuta in uno NSArray o NSDictionary) tuttavia la risposta non è la precedente (Molto probabilmente una stringa semplice).

Inoltre, provare a impostare "Consenti frammenti" sul serializzatore della risposta.

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
+2

Life Saver compagno, grazie – cesarferreira

+4

non il suo lavoro per me –

+0

Non funziona anche per me. –

14

Potrebbe essere necessaria l'autenticazione per accedere alla risposta JSON. Impostare l'autenticazione del genere:

[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"XYZ" password:@"xyzzzz"]; 

Prova questa:

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
[self setResponseSerializer:responseSerializer]; 

invece di:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
+0

Ottima risposta che mostra dove è necessario inserire questo codice. Un piccolo dettaglio ma molto importante –

+0

Sono rimasto bloccato su questo problema per un po ', ho provato tutto in questa risposta -> http://stackoverflow.com/questions/19114623/request-failed-unacceptable-content-type-text-html- using-afnetworking-2-0 ma la tua risposta è stata quella che ha funzionato. – Allen

+0

@iDeveloper Grazie ha funzionato per me ... lottando con esso per un po '... 1 upvote –

Problemi correlati