gpt4 book ai didi

python - 编码 json 并将其发送到 Objective C 后端的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 00:18:58 25 4
gpt4 key购买 nike

我有以下代码库:

NSString *urlString = [NSString stringWithFormat:@"ip_address"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSData *imageData = UIImageJPEGRepresentation(imageToPost, 1.0);
NSString *imageDataEncoded = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

NSMutableDictionary *jsonRequest = [[NSMutableDictionary alloc] init];
[jsonRequest setObject:imageDataEncoded forKey:@"data"];
NSError *error;
NSData *dataFromDict = [NSJSONSerialization dataWithJSONObject:jsonRequest options:NSJSONReadingAllowFragments error:&error];

[request setHTTPBody:dataFromDict];

这是正确的方法吗?

在我有 Python 使用 requests 库接收请求并解析 json 的后端,我有一行代码如下:

print(base64.b64decode(request.form.get('data'))

这将打印请求的前几个字符,如下所示:

ImmutableMultiDict([('{"data":"\\/9j\\/4AAQSkZJRgABAQAASA`

如您所见,它实际上不是 json,因为它有几个 ' 标记。

如何最好地处理收到的 JSON 以及发送请求的最佳方式是什么?

最佳答案

我认为 python 后端不是这种情况。我已经将 NSDictionary 转换为 NSData,就像您所做的那样,并使用其他方法,并在 NodeJS 上获得了类似的请求正文。似乎 NSDictionary 没有正确转换为 NSData,因为字典的键值根据请求作为键发送

来自 NSDictionary 的正文数据: NSDictionary to NSData

但是,从 NSString 转换为 NSData 会提供更可靠的 JSON 数据:

NSData *imageData = UIImageJPEGRepresentation(imageToPost, 1.0);
NSString *imageDataEncoded = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

NSString *postString = [NSString stringWithFormat:@"data=%@", imageDataEncoded];
NSData *bodyData = [postString dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPBody:bodyData];

已更新

经过一些调查我发现,我应该在请求的 header 中设置 Content-Type。

 [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

然后按预期发送从 NSDictionary 转换而来的 NSData。

(注意:我在中间件中使用 ExpressJS 作为后端和 body-parser )

关于python - 编码 json 并将其发送到 Objective C 后端的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44527466/

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