数据无法被读取,因为它不是正确的格式 - 目标c

问题描述:

您好iam新的iOS开发,我想使用AFHTTPSessionManager发布一个JSON对象到一个URL。数据无法被读取,因为它不是正确的格式 - 目标c

但是,我不断得到错误The data couldn’t be read because it isn’t in the correct format

有人可以帮我解决这个问题。 TNX。 ................................................. ........................

方法

- (void) registerUser: (NSString *)emailAdd compnyName:(NSString *) companyNam{ 

    NSMutableDictionary *userAccount = [[NSMutableDictionary alloc] init]; 
    [userAccount setObject:@"sighUpForm" forKey:@"$name"]; 
    [userAccount setObject:@"true" forKey:@"$dirty"]; 
    [userAccount setObject:@"false" forKey:@"$pristine"]; 
    [userAccount setObject:@"true" forKey:@"$valid"]; 
    [userAccount setObject:@"false" forKey:@"$invalid"]; 
    [userAccount setObject:@"false" forKey:@"$submitted"]; 
    [userAccount setObject:emailAdd forKey:@"$Email"]; 
    [userAccount setObject:companyNam forKey:@"$CompanyName"]; 

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
    [dict setObject:companyNam forKey:@"HelpdeskDomainName"]; 
    [dict setObject:companyNam forKey:@"CompanyName"]; 
    [dict setObject:[NSString stringWithFormat:@"%@ : Admin",companyNam] forKey:@"FirstName"]; 
    [dict setObject:@"" forKey:@"LastName"]; 
    [dict setObject:emailAdd forKey:@"SendTo"]; 
    [dict setObject:@"0" forKey:@"PreferedLanguageID"]; 
    [dict setObject:@"" forKey:@"AffiliateId"]; 
    [dict setObject:userAccount forKey:@"UserAccountModel"]; 
    NSLog(@"signup dicxtionary : %@", dict); 

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

    NSLog(@"Login dicxtionary : %@", dict); 
    MBProgressHUD *hud; 
    hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    hud.label.text = @"Please wait...."; 
    //manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 

    [hud showAnimated:YES]; 
    // send user login data to hosting via AFHTTP Async Request in AFNetworking 
    [manager POST:BASEURL parameters:dict progress:nil success:^(NSURLSessionTask *task, id responseObject) { 

     [hud hideAnimated:YES]; 
     // Login response validation 
     if (responseObject == [NSNull null]) { 

      // [self showErrorMessage:@"Unable to login. Please try again!" title:@"Login Failed"]; 
     }else { 
      //NSError *error = nil; 
      NSLog(@"response type : %@", NSStringFromClass([responseObject class])); 
      //NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:&error]; 
      //[self checkResultValue:(NSDictionary *)responseObject]; 
     } 

    } failure:^(NSURLSessionTask *task, NSError *error) { 

     NSLog(@"%@", [error localizedDescription]); 
    }]; 

} 
+1

如果使用邮差(或其他类似的解决方案),并把相同的参数,它的工作原理?你可以使用'[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil] encoding:NSUTF8StringEncoding]'在JSON中使用current参数并在POSTMAN中使用它。那它有用吗? – Larme

+0

您尝试添加标题。可能会解决你的问题。 –

+0

@Larme tnx。我检查邮政人,它工作正常。在添加代码***终止应用程序,由于未捕获的异常'NSInvalidArgumentException',原因:'*** + [NSJSONSerialization dataWithJSONObject:options:error:]:无效的JSON顶级类型write''我得到这个错误。 –

试试这个

你需要如下改变:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 


AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setStringEncoding:NSUTF8StringEncoding]; 

manager.requestSerializer=serializer; 
manager.responseSerializer.acceptableContentTypes= [NSSet setWithObjects:@"text/html",@"application/json", nil]; 
+0

TNX。但添加后。我收到了同样的错误。 –

+0

试试这个:http://stackoverflow.com/a/39918680/3901620和http://stackoverflow.com/a/39740394/3901620 – KKRocks

删除行NSLog(@"%@", [error localizedDescription]);。 由[error localizedDescription]返回的字符串不可读。请参阅Apple NSError文档。 enter image description here

如果你想看到错误信息,使用NSLog(@"%@",error.userInfo[@"NSLocalizedDescription"]);

+0

这不能解决我的问题。 –