gpt4 book ai didi

ios - AFNetworking 2.x 中带有多部分/表单数据的嵌套 Json

转载 作者:行者123 更新时间:2023-11-29 10:24:21 27 4
gpt4 key购买 nike

我正在尝试使用 AFNetworking 库从我的 ios 应用程序发送带有图像的嵌套 json。我能够成功发送 json 数据和图像,但在服务器中 json 结构不同。

我的应用内的 HTTP 请求:-

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{@"requestData":@{@"username":@"200OK",@"password":@"password"}};

manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];


[manager POST:Self_URL
parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:UIImagePNGRepresentation(image)
name:@"file"
fileName:@"file"
mimeType:@"image/jpeg"];

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

所以在我的 Django 服务器中,我期望参数作为与参数相同的字典,但是 request.POST

content_type---> multipart/form-data; boundary=Boundary+247685AB6DF2B3BA
<QueryDict: {'requestData[password]': [u'password'], 'requestData[username]': [u'200OK']}>

如何发送 json 数据以便从服务器轻松访问?我遗漏了什么或出了什么问题?

最佳答案

constructingBodyWithBlock 正在覆盖您的 AFJSONRequestSerializer 并且您的字典被编码为表单数据。无法同时为请求提供两种内容类型(multipart/form-dataapplication/json),因此您必须这样做另一种方式。

一种可能性是将 JSON 编码为 NSData 对象并将其与图像数据一起附加到多部分表单:

NSError *error = nil;
NSData *paramData = [NSJSONSerialization dataWithJSONObject:params
options:0
error:&error];
[formData appendPartWithFileData:paramData
name:@"params"
filename:@"params"
mimeType:@"application/json"]

您可以通过request.FILES['params'] 访问序列化参数。尽管是 mime 类型,但我怀疑 django 是否会自动将 JSON 数据解析为字典,但您可以使用 json.loads 手动执行此操作。

关于ios - AFNetworking 2.x 中带有多部分/表单数据的嵌套 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33233828/

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