在Objective-C中使用Afnetworking的post方法

时间:2017-01-12 02:20:00

标签: objective-c json afnetworking

如何编写代码以使用Afnetworking为以下JSON格式发送POST方法。

{
Media
  {
      Photo : image.jpg, 
      UserId : 2
  },
Personal
  {
      Name : aaa, 
      Age   : 30
  }, 
Education
  {
    College : xxx, 
    Course : yyy    

  }, 
} 

2 个答案:

答案 0 :(得分:0)

显然这不是真正的格式,但我们可以猜出你的意思。显然,如果这些数值(用户id和年龄)被期望为字符串,那么引用然后,但希望它说明该字典的Objective-C表示可能是什么样子:

NSDictionary *parameters = @{@"Media": @{@"Photo": @"image.jpg", @"UserId": @2}, @"Personal": @{@"Name": @"aaa", @"Age": @30}, @"Education": @{@"College": @"xxx", @"Course": @"yyy" }};

然后您可以将其发布为JSON,如下所示:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

[manager POST:@"https://yoururl.com" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    NSLog(@"responseObject = %@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"error %@", error);
}];

如果您的服务器不支持HTTPS,但只支持HTTP,那么您可能需要将Info.plist的“应用传输安全设置”更改为“允许任意负载”。

enter image description here

答案 1 :(得分:0)

首先制作一份你要发送的参数字典

NSDictionary *params = @{
                                     @"contact_no":@"9898989898",
                                     @"password":@"••••••••••"
                                     };

然后编写以下代码

AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager];
    operationManager.requestSerializer = [AFJSONRequestSerializer serializer];
    operationManager.responseSerializer = [AFJSONResponseSerializer serializer];
operationManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
        [operationManager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject){
            NSLog(@"%@",responseObject);

        } failure:^(AFHTTPRequestOperation *operation, NSError *error){
            if (failure)
                NSLog(@"%@",error.localizedDescription);
        }];

您可以忽略我设置acceptableContentTypes的行。

希望这会有所帮助。