UdayM
UdayM

Reputation: 1783

AFNetworking Send JSON as a parameter for POST request

I gone several answers for the same question...but unable to figure out this issue..i am getting this error

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'

My code is:

NSDictionary *loginDict=[[NSDictionary alloc] initWithObjectsAndKeys:password.text,@"password",userName.text,@"userName",nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginDict                                                           options:NSJSONWritingPrettyPrinted                                                              error:&error];
if (jsonData) {
        NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
} else {
        NSLog(@"Got an error: %@", error);
}


 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 manager.requestSerializer = [AFJSONRequestSerializer serializer];
 [manager.requestSerializer setTimeoutInterval:20];
 [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
 [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
 manager.responseSerializer = [AFJSONResponseSerializer serializer];
 manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];

[manager POST:baseUrlLogin parameters:jsonString
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
}];

Upvotes: 0

Views: 858

Answers (1)

Anbu.Karthik
Anbu.Karthik

Reputation: 82766

try this

directly pass loginDict in your call and check

manager.requestSerializer = [AFJSONRequestSerializer serializer];
/*
[manager.requestSerializer setTimeoutInterval:20];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
 manager.responseSerializer = [AFJSONResponseSerializer serializer];
 manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
 */
[manager POST:baseUrlLogin parameters: loginDict
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

Upvotes: 4

Related Questions