在Objective-C中使用AFN网络的Post方法
如何使用Afnetworking为下面的JSON格式编写发送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 }, } 显然,这不是实际的格式,但我们可以猜出你的意思。显然,如果
{
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),您必须在服务器端对其进行解码。谢谢您的回答。