gpt4 book ai didi

php - AFNetworking multipart/form-data POST 发送不正确的 JSON 字典数组

转载 作者:行者123 更新时间:2023-11-28 19:45:18 24 4
gpt4 key购买 nike

我不知道这是一个错误还是我没有做对。

这篇文章看起来很接近为我解决问题但没有:AFNetworking posts JSON arrays as multiple single-entry dictionaries

我正在尝试发送带有图像的多部分/表单数据 POST,并将字典(包含字典数组)传递给“参数”以作为 JSON 发送。

字典:

NSDictionary *parameters = @{@"photos" : @[@{@"photoID":@"0", @"imageURL":@"0", @"imageName":@"0"},
@{@"photoID":@"1", @"imageURL":@"1", @"imageName":@"1"},
@{@"photoID":@"2", @"imageURL":@"2", @"imageName":@"2"}]};

请求:

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


[manager POST:@"myURL" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"image" fileName:@"image" mimeType:@"image/png"];

} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@", responseObject);

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

图像发送和接收正常,但是服务器上收到的 JSON 如下所示:

{
photos = (
{
imageName = 0;
},
{
imageURL = 0;
},
{
photoID = 0;
},
{
imageName = 1;
},
{
imageURL = 1;
},
{
photoID = 1;
},
{
imageName = 2;
},
{
imageURL = 2;
},
{
photoID = 2;
}
);
}

...多个单条目字典的数组:(

代替:

{
photos = (
{
imageName = 0;
imageURL = 0;
photoID = 0;
},
{
imageName = 1;
imageURL = 1;
photoID = 1;
},
{
imageName = 2;
imageURL = 2;
photoID = 2;
}
);
}

任何帮助都会很棒,谢谢!

最佳答案

AFNetworking 中构建多部分请求时,参数作为 form-data 发送。要在您的多部分响应中发送 JSON 编码的正文,您需要将它们序列化并将它们附加到多部分响应中,作为您的服务器期望接收它们的方式。

根据您的服务器对它们的期望,您可以使用如下内容:

 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myJSON options:0 error:nil];

[formData appendPartWithFileData:jsonData name:@"name" fileName:nil mimeType:@"application/json"];

关于php - AFNetworking multipart/form-data POST 发送不正确的 JSON 字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32593834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com