Sending array of dictionary with afnetworking 2.0

77 Views Asked by At

I've a big problem, I'm trying to send an array of dictionary with afnetworking, that's my code:

checkDeliveryParams = @{@"cart_total":@(cart_total),@"shipping":@{@"address":[User  sharedInstance].shipping_city,@"country":@"IT",@"postcode":[User sharedInstance].shipping_postcode,@"state":[User sharedInstance].shipping_provincia},@"user_id":@([User sharedInstance].user_id),@"cart_contents":temp};

cart total it's an array like this

(
  quantity:1
  product_id:2

)

but server receive something like this

(
quantity:1
),
(
product_id:2
)

my request code is

+(void)GET:(NSString *)path
    params:(NSDictionary *)params
      auth:(BOOL)authenticate
   success:(void (^)(NSDictionary* responseObject))success
   failure:(void (^)(NSError *error, NSDictionary* responseObject))failure{
    
    
    NSString *URLString = [@"" stringByAppendingPathComponent:path];
    NSLog(@"GET - API URL: %@", URLString);
    
    AFHTTPRequestOperationManager *manager = [Rest commonManager:path sendAuthToken:authenticate];
  //  manager.requestSerializer=NSJSONSerialization ;
    [manager GET:URLString parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responsedata){
        NSLog(@"ok della richiesta %@",responsedata);
        [Rest verbose:responsedata];
        success(responsedata);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"errore della richiesta %@",error.localizedDescription);
        failure(error,[Rest parseErrorResponseForOperation:operation]);
        
    }];
    
}

I've tried a lot of method, I've tried to set nsjonserializer, "application/json", I've already tried to use NSURLSessionDataTask...

Sorry for my English, someone can help me ?

the common manager call in [rest commonManager] is defined in this method

+(AFHTTPRequestOperationManager *)commonManager:(NSString *)path sendAuthToken:(BOOL)sendToken{
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];

    manager.securityPolicy.allowInvalidCertificates = NO;
    
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

    
    
    if([Session isOpen] && [Rest authorizationRequiredForPath:path] && sendToken){
        [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@", [Session token]] forHTTPHeaderField:@"Authorization"];
    }
    
    return manager;
}
1

There are 1 best solutions below

0
Michele Schillaci On

that's how I send parameters in get call

+(void)GET:(NSString *)path
    params:(NSDictionary *)params
      auth:(BOOL)authenticate
   success:(void (^)(NSDictionary* responseObject))success
   failure:(void (^)(NSError *error, NSDictionary* responseObject))failure{
    
    
    NSString *URLString = [@"" stringByAppendingPathComponent:path];
    NSLog(@"GET - API URL: %@", URLString);
    
    AFHTTPRequestOperationManager *manager = [Rest commonManager:path sendAuthToken:authenticate];
  //  manager.requestSerializer=NSJSONSerialization ;
    [manager GET:URLString parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responsedata){
        NSLog(@"ok della richiesta %@",responsedata);
        [Rest verbose:responsedata];
        success(responsedata);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"errore della richiesta %@",error.localizedDescription);
        failure(error,[Rest parseErrorResponseForOperation:operation]);
        
    }];
    
}