我正在使用AFNetworking 2.0,需要同时使用json数据和多个图像构建对我的服务器的请求。
我能想象的是请求将采用以下结构:
Content-Type multipart/form-data;boundary=abc
--abc
{"title":"Product discussion","attendee":[{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"5"}]}
--abc
Content-Disposition: form-data; name="img"
Content-Type: image/png
...image data...
--abc--
这里只是简化的结构。真正的会议数据更复杂,层次更多,所以我认为使用json更好。
但是我不知道如何使用afnetworking构建这样的数据结构,例如
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setValue:meeting.title forKey:@"title"];
NSMutableArray *attendeeList = [[NSMutableArray alloc]init];
for(Attendee *attendee in meeting.attendeeList)
{
NSMutableDictionary *attendeeDictionary = [[NSMutableDictionary alloc]init];
[attendeeDictionary setValue:attendeeID forKey:@"id"];
[attendeeList addObject: attendeeDictionary];
}
[parameters setValue:attendeeList forKey:@"attendee"];
httpClient.requestSerializer = [AFJSONRequestSerializer serializer];
[httpClient POST:@"createappointment.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
UIImage *image = [UIImage imageNamed:@"image.png"];
NSData *imageData = UIImagePNGRepresentation(image);
[formData appendPartWithFileData:imageData
name:@"img"
fileName:@"img.png"
mimeType:@"image/png"];
}
} success:....
但代码似乎忽略了AFJSONRequestSerializer并将会议标题和与会者ID放在POST数组的形式中。
在服务器端是PHP。通常我可以从$ _FILE和php:// input + json_decode中获取json数据,但在这种情况下我不知道,解析上述结构的最佳方法是什么?
有没有人也满足这样的要求以及如何在iOS和服务器端正确解决它?
答案 0 :(得分:0)
因此,在这种情况下,您可以从$_POST
而不是$_FILES
获取,或者您可以使用file_get_contents("php://input")