在Objective-C中使用Afnetworking的Post方法
如何使用Afnetworking将代码编写为以下JSON格式的POST方法。在Objective-C中使用Afnetworking的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
的‘应用交通运输安全设置’到‘允许任意负载’。
感谢罗布,我怎样才能发送“image.jpg”,是否需要像这样转换formdata,AFHTTPRequestOperationManager * requestManager; [requestManager POST:KAPIUploadOutfit参数:PARAMS constructingBodyWithBlock:^(ID
当然,但这不是JSON,你说你想用。这是一个'multipart/form-data'请求。这是发送文件和发送表单值(即键/名称和值对)的好方法,但不适用于发送结构化JSON(或者至少没有将JSON放入'multipart/form-data'请求中) 。因此,您可以选择:使用'multipart/form-data'并简化请求其余部分的结构,或者使用JSON,但是必须将图像转换为JSON中的某些文本表示(例如base-64编码),你将不得不在服务器端解码.. – Rob
感谢您的回答罗布。 – Lenin
首先使PARAMS要发送
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分钟的时间[参观]。 –