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

时间:2016-12-09 10:51:52

标签: ios objective-c afhttpsessionmanager

我是IOS开发的新手,我正在尝试使用AFHTTPSessionManager将JSON对象发布到URL。

但是,我不断收到错误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]);
    }];

}

2 个答案:

答案 0 :(得分:0)

试试这个

您需要更改如下:

 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];


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

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

答案 1 :(得分:0)

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

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