数据无法被读取,因为它不是正确的格式 - 目标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]);
}];
}
答
试试这个
你需要如下改变:
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
如果使用邮差(或其他类似的解决方案),并把相同的参数,它的工作原理?你可以使用'[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil] encoding:NSUTF8StringEncoding]'在JSON中使用current参数并在POSTMAN中使用它。那它有用吗? – Larme
您尝试添加标题。可能会解决你的问题。 –
@Larme tnx。我检查邮政人,它工作正常。在添加代码***终止应用程序,由于未捕获的异常'NSInvalidArgumentException',原因:'*** + [NSJSONSerialization dataWithJSONObject:options:error:]:无效的JSON顶级类型write''我得到这个错误。 –