1

我无法将 UIImage 对象发送到仅接受 JSON 作为输入的 REST Web 服务。我已经设置好我的对象映射,它可以很好地生成 JSON,直到它到达任何 UIImages。

我阅读了有关单独加载图像的页面: https ://github.com/RestKit/RestKit/wiki/Attach-a-File-to-an-RKObjectLoader 但这总是将内容类型从 application/json 更改为 application /xxx-form-url-encoded(或任何它)。

那么在不使用 RKParams 的情况下完成此任务的最佳方法是什么?

我在这里找到了另一个链接:https ://groups.google.com/forum/#!msg/restkit/QcTPucXXn4o/41IcKDCeoGAJ 谈到了 RestKit 的早期版本,您可以在其中使用RKObjectMappable协议中的 propertiesForSerialization但该协议和方法没有在 0.10.0 中似乎可以使用更长的时间。

新版本中是否有某种方法允许您在尝试序列化之前用 base64 编码数据(因此 JSON 安全)替换 UIImage 的内容?

或者还有其他解决方案吗?任何帮助表示赞赏。谢谢

4

3 回答 3

2

我已经使用 RestKit 完成了这项工作,方法是保存到“imageData”属性并在 base64 中编码图像。

不过,这对 CoreData 来说并不是很好,所以我编写了它,以便在从服务器获取图像(以 base64 编码)时,它将图像保存到磁盘,然后将路径存储在 Core Data 中。然后在将图像推送到服务器时,它会在磁盘上找到文件,编码为 base64,然后将其包含在 JSON 中。

这不是一个完美的方法,但如果你不经常来回发送图像,它会很好地工作。

于 2012-04-27T22:43:37.620 回答
1

您是否尝试过使用 RKParams 并仅更改您的 serializationMIMEType?

    RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];;
    objectManager.serializationMIMEType = RKMIMETypeJSON;
于 2012-04-27T10:15:10.573 回答
1

好吧,我想出了一种方法来做到这一点。

我最终为每个 UIImage 创建了一个额外的 NSString 属性,这就是我用来映射的,而不是实际的 UIImage。然后在 postObject 之前,我为每个图像生成 base64 代码并相应地填充 NSString 属性。

不是最好的方法,但仍然很想看看其他人的想法。

于 2012-04-27T14:41:47.327 回答