在Objective-C中使用AFN网络的Post方法

在Objective-C中使用AFN网络的Post方法,objective-c,json,afnetworking,Objective C,Json,Afnetworking,如何使用Afnetworking为下面的JSON格式编写发送POST方法的代码 { Media { Photo : image.jpg, UserId : 2 }, Personal { Name : aaa, Age : 30 }, Education { College : xxx, Course : yyy }, } 显然,这不是实际的格式,但我们可以猜出你的意思。显然,如果

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

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

  }, 
} 

显然,这不是实际的格式,但我们可以猜出你的意思。显然,如果这些数字值(用户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
的“应用程序传输安全设置”更改为“允许任意加载”


首先为要发送的参数创建一个字典

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
的那一行


希望这会有所帮助。

您的代码在哪里?请看。你甚至连2分钟的网站都不想看。谢谢Rob,我怎样才能发送“image.jpg”,是否需要像这样转换表单数据,AFHTTPRequestOperationManager*requestManager;[requestManager POST:KAPIUploadOutfit参数:params constructingBodyWithBlock:^(id formData){[formData appendPartWithFileURL:fileURL名称:@“photo_url”文件名:文件名mimeType:@“image/png”错误:nil];}当然可以,但这不是你说要使用的JSON。它是一个
多部分/表单数据
请求。它是发送文件和表单值(即键/名称和值对)的好方法,但不用于发送结构化JSON(或者至少不需要在
多部分/表单数据
请求中放入JSON这样的愚蠢行为)。因此,您可以选择:使用
多部分/表单数据
并简化其余请求的结构,或者使用JSON,但是您必须将图像转换为JSON中的某些文本表示形式(例如base-64 encode),您必须在服务器端对其进行解码。谢谢您的回答。