gpt4 book ai didi

ios - 发布 JSON Body + MultiPart RestKit 0.2x 失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:24 27 4
gpt4 key购买 nike

我正在尝试发布一个带有附件的对象。

 NSMutableURLRequest *request =
[objectManager multipartFormRequestWithObject:reqDocObj
method:RKRequestMethodPOST
path:@"syncDocument.json"
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:UIImagePNGRepresentation([UIImage imageNamed:@"graybox.png"])
name:@"image"
fileName:@"some_file"
mimeType:@"image/jpeg"];

}];



RKObjectRequestOperation *operation =
[objectManager
objectRequestOperationWithRequest:request
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {


}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"WS: errore operazione di richiesta %@",error);


}
];


[objectManager enqueueObjectRequestOperation:operation];

objectManager 配置为:

    [objectManager setAcceptHeaderWithMIMEType:RKMIMETypeJSON];
[objectManager setRequestSerializationMIMEType:RKMIMETypeJSON];
objectManager.requestSerializationMIMEType = RKMIMETypeJSON;

[编辑]

我的 mapepd 对象是 SynchDocObj:

requestDocMapping = [RKObjectMapping mappingForClass:[SynchDocObj class]];
[requestDocMapping addAttributeMappingsFromDictionary:mappingDocDict];

问题是:

1)在RKlogs中,request.body = null和JSON对象被放入form-data

2) 服务器无法解码正文,因为它是null

我的问题是:

1) 我是否以错误的方式发送了 JSON 对象?

2) 如果是,我如何发送带有文件上传的 JSON 对象,即作为多部分请求?问候!

[解决方案]

按照答案的建议,我认为解决方案是 1) 从表单数据而不是主体中检索映射对象; 2) 或者发布一个 nil 对象并在表单数据中放入一个 JSON 字符串。

最佳答案

这个:

[objectManager setRequestSerializationMIMEType:RKMIMETypeJSON];
objectManager.requestSerializationMIMEType = RKMIMETypeJSON;

是表达同一事物的 2 种不同方式 - 而您不想使用其中任何一种。您需要以 URL 编码形式(默认值)发送请求。

最简单的做法是使用与当前代码中相同的表单来创建请求,提前生成 JSON,然后使用 appendPartWithFormData:name: 将其添加到请求中(只是在添加文件之前)。

要生成 JSON,您可以使用 RestKit (RKMappingOperation),或者您可以只创建一个字典/内容数组,然后使用 NSJSONSerialization 序列化要添加的对象请求。

关于ios - 发布 JSON Body + MultiPart RestKit 0.2x 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641720/

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