2015-12-23 3 views
3

Как я могу POSTJSON с AFNetworking? Ниже приведен пример формата JSON. Заранее спасибо.Как настроить POST JSON с использованием AFNetworking?

{ 
    "application": { 
     "identifier": "appDev" 
    }, 
    "sso": { 
     "version": 2.0, 
     "session_expiry": 43200 
    }, 
    "user": { 
     "password": "[email protected]", 
     "username": "xxx0min" 
    }, 
    "coordinate": { 
     "latitude": 10.9948629, 
     "longitude": -169.5213749 
    } 
} 

Я успешно создал JSON:

NSDictionary *parameters = @{@"application": @{@"identifier": @"appDev"}, @"sso": @{@"version": @"2.0", @"session_expiry":@43200}, @"user": @{@"password":@"[email protected]", @"username":@"xxx0min"}, @"coordinate": @{@"latitude":@10.9948629, @"longitude":@-169.5213749}}; 
+3

Преобразовать что в NSDictionary и опубликовать его в качестве параметра, http://stackoverflow.com/questions/21487184/posting-json-data-using-afnetworking-2-0 – Flexicoder

+0

HTTP: // StackOverflow. com/questions/18342071/afnetworking-send-array-in-json-parameters-of-post-request –

+1

По умолчанию 'requestSerializer' является' [AFHTTPRequestSerializer serializer] '. Если сервер спроектирован для приема запросов JSON, вам нужен 'manager.requestSerializer = [AFJSONRequestSerializer serializer]'. – Rob

ответ

8

Первый новообращенный JSON строку в NSDictionary:

NSError *error; 
NSData *objectData = [@"{\"1\":\"2\"}" dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData 
             options:NSJSONReadingMutableContainers 
             error:&error]; 

Тогда вы можете отправить этот словарь с AFNetworking. В версии 3 вы должны использовать AFHTTPSessionManager:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 

[manager POST:@"your_URL" parameters:json progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
    NSLog(@"Complete"); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    NSLog(@"Fail"); 
}]; 
+0

спасибо, что ответили. большие пальцы вверх для версии AFNetworking 3. –

1

Наконец-то я нашел решение своей проблемы. То, что я делал, делает NSDictionary NSDictionary для моих параметров JSON. Ниже приведен полный код решения.

NSString *loginURL = @"http://myappdev.dev/login"; 

NSDictionary *parameters = @{@"application": @{@"identifier": @"appDev"}, @"sso": @{@"version": @"2.0", @"session_expiry":@43200}, @"user": @{@"password":@"[email protected]", @"username":@"xxx0min"}, @"coordinate": @{@"latitude":@10.9948629, @"longitude":@-169.5213749}}; 

    NSLog(@"params : %@", parameters); 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
    [manager POST:loginURL parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"JSON Successsss: %@", responseObject); 
     NSLog(@"operation Successsss: %@", operation); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error laaa: %@", error); 
    }]; 
Смежные вопросы