2013-05-10 17 views
13

Um Registrierungsdaten an den Server senden verwenden, ich bin mit JSON ist in folgender Form:senden Nested JSON AFNetworking

Hier ist, wie das Senden bin.

NSURL * url = [[NSURL alloc] initWithString:registerUrlString]; 
      AFHTTPClient * httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
      httpClient.parameterEncoding = AFJSONParameterEncoding; 
      [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; 
      NSDictionary * params = @{@"regData": @{ 
               @"City": self.cityField.text, 
               @"Country": self.countryField.text, 
               @"Email_Id": self.emailField.text, 
               @"MobileNumber": self.numberField.text, 
               @"UserName": self.userName.text, 
               } 
             }; 

      NSMutableURLRequest * request = [httpClient requestWithMethod:@"POST" path:registerUrlString parameters:params]; 
      AFHTTPRequestOperation * operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
       NSLog(@"Success: %@", JSON); 

      } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
      NSLog(@"Error: %@", [error debugDescription]); 
      }]; 

      [operation start]; 

Aber leider habe ich diese Störung erhalte:

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

+1

Ihre Methode ist nicht generisch. Überprüfen Sie die richtige Methode [hier] (http://stackoverflow.com/questions/14958883/ios-serialize-deserialize-complex-json-generical-from-nsobject-class). Weniger fehleranfällig und wartbar –

Antwort

32

Ihre Anfrage zu erhalten, ist in Ordnung. Der Fehler Error Domain=NSCocoaErrorDomain Code=3840 wird zurückgegeben, da Ihr Server mit einem ungültigen JSON-Objekt antwortet. NSLogoperation.responseString um zu sehen, was zurückgeschickt wird.

+2

Danke, mattt! Ich habe dieses Problem bereits behoben. Das Problem war wie du erwähnt hast. Ich bekam String vom Server eher ein JSON. – Homam

+1

@mattt, ich unterklassifizierte, 'AFFTTPSessionManager' wo finde ich' operation.responseString'? – Hemang

+0

@Hemang haben Sie eine Lösung gefunden, die sich auf "Error Domain = NSCOAErrorDomain Code = 3840" bezieht? – Akhtar

2

dies versuchen, den tatsächlichen Fehler

NSLog(@"Error: %@", [error debugDescription]); 
NSLog(@"Error: %@", [error localizedDescription]); 
+4

Ich erhalte diesen Fehler: Fehler Domain = NSCOAErrorDomain Code = 3840 "Die Operation konnte nicht abgeschlossen werden. (Cocoa Fehler 3840.)" (JSON Text nicht mit Array oder Objekt und Option zu ermöglichen Fragmente nicht festgelegt.) UserInfo = 0x94b3c30 {NSDebugDescription = JSON-Text hat nicht mit Array oder Objekt und Option begonnen, um Fragmente nicht gesetzt zu lassen.} – Homam