2016-12-09 11 views
1

こんにちはiamはIOS開発には新しく、AFHTTPSessionManagerを使用してJSONオブジェクトをURLにPOSTしようとしています。正しい形式でないため、データを読み取ることができませんでした。-objective 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

を使用して、エラー情報を参照し、同じパラメータを入れたい場合は、それが動作するのでしょうか?現在のJSONパラメータをPOSTMANで使用するには、 '[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil] encoding:NSUTF8StringEncoding]'を使用できます。それはその後動作しますか? – Larme

+0

ヘッダーを追加しようとしました。あなたの問題を解決するかもしれません。 @Larme tnx。 –

+0

私はそれがうまく動作する投稿男とチェックします。 **** [NSJSONSerialization dataWithJSONObject:options:error:]:JSONの無効な最上位型write''がこのエラーを受け取ります。 –

答えて

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]; 
+0

TNX。しかしこれを加えた後。同じエラーが発生しています。 –

+0

これを試してください:http://stackoverflow.com/a/39918680/3901620とhttp://stackoverflow.com/a/39740394/3901620 – KKRocks

0

削除行NSLog(@"%@", [error localizedDescription]);[error localizedDescription]で返される文字列は読み取れません。 Apple NSErrorドキュメントを参照してください。 enter image description here

あなたはPOSTMAN(または他の同様のソリューション)を使用している場合NSLog(@"%@",error.userInfo[@"NSLocalizedDescription"]);

+0

これは私の問題を解決しません。 –

関連する問題