如何将原始 NSData 以及一些 NSStrings 发布到我的服务器?

Posted

技术标签:

【中文标题】如何将原始 NSData 以及一些 NSStrings 发布到我的服务器?【英文标题】:How do I POST raw NSData as well as some NSStrings to my server? 【发布时间】:2018-08-21 19:53:11 【问题描述】:

我有一大块 NSData 想发送到我的服务器,但我也想发送一个字符串字典,其中包含映射到字符串键的字符串键。

如何在同一个请求中同时发布两者?

几乎所有指南都显示将其包装在 NSDictionary 中,然后使用 NSJSONSerialization 将其转换为 NSData 然后发布,但我不能将 NSData 和 NSStrings 放在同一个 NSDictionary 中,它只会崩溃,所以我假设我必须将它分开,但那看起来怎么样?

基本上我如何将 JSON 序列化为 NSData,然后还有一个单独的 NSData blob?

【问题讨论】:

可以先将 NSData 转换为 base64 String 再添加到字典中。然后在服务器 api 端点,您需要将该 base64 字符串转换回数据。 【参考方案1】:
let body = NSMutableDictionary()
body.setValue("myString" forKey: "stringType")
body.setValue(data?.base64EncodedString(options: .lineLength64Characters) forKey: "dataType")

通过这种方式,您可以在字典中同时拥有数据和字符串。 这里 'data?.base64EncodedString(options: .lineLength64Characters)' 返回一个带有 base64 编码的 string。所以你的字典只包含字符串,在服务器端你必须将它转换回数据。

希望它能解决你的问题

【讨论】:

以上是关于如何将原始 NSData 以及一些 NSStrings 发布到我的服务器?的主要内容,如果未能解决你的问题,请参考以下文章

我将一些数据发送到 web 服务,它返回一些 JSON 作为 NSData。如何转换为字典?(iOS 4.3)

是否可以将图像存储为可可中的字符串?

IO 直接播放来自 UDP 流 (NSData) 的原始音频

Cocoa:来自原始数据的 AVAsset(即 NSData)

如何将这几种不同的值类型结合到 NSData 中?

将 NSData 转换为 NSString 后如何将 NSString 转换回 NSData?