【发布时间】:2012-08-09 04:50:03
【问题描述】:
我目前正在使用 google 的协议缓冲区。它可以在 Java 和 C# 之间轻松运行,但是我在尝试使用 Obj-c 实现相同用途时遇到了问题。
Java WS 返回一个字节[]。使用protocol buffer API的代码很简单:
productGroup.toByteArray();
我可以使用 Skeet 的 C# 端口重新创建对象,使用:
byte[] result = searchWebService.SearchProductsProtocolBuffer(search);
ProductProtoGroup products = ProductProtoGroup.ParseFrom(result);
但是,在 obj-c 方面,我正在努力处理返回值。
我从同一个 Web 服务 RPC 收到的 NSString 是这样的:
CmYKEzgwMDAwMUFELTEzMjUyNzk5MTQySUZPT0QgJiBCRV...
我不太确定如何处理它,因为我不知道它是什么,保存它是从字节数组生成的。我尝试使用
将其直接解析为 NSDataNSData* data = [returnValue dataUsingEncoding:NSUTF8StringEncoding];
但是在[ProductProtoGroup parseFromData:data]; 上,我得到一个InvalidProtocolBuffer
我在 Java 端检查了原始 byte[] 的字节字符串/十六进制表示形式,它与我从 ws 收到的字符串不匹配。
十六进制是 0-F。也许每个字节都被转换为一个字符?不,这不匹配。
任何帮助将不胜感激。
丹麦人
【问题讨论】:
-
神秘的 NSString 编码的源值是什么? (例如你在 Java 或 C# 中得到的字节数组)?
-
你正在使用协议缓冲区的哪个 Objective-C 端口?
标签: java objective-c encoding protocol-buffers