我目前使用google的协议缓冲区。它在Java和C#之间毫无痛苦地工作,但是我遇到了试图用Obj-c实现相同用法的问题。协议缓冲区:从Java到Objective-C使用byte []
Java WS返回一个字节[]。使用该协议缓冲API的代码是很简单的:
productGroup.toByteArray();
我能够重建具有碟的C#端口的对象,使用:
byte[] result = searchWebService.SearchProductsProtocolBuffer(search);
ProductProtoGroup products = ProductProtoGroup.ParseFrom(result);
然而,在OBJ-C侧,我我正在努力工作以回报价值。
NSString的我来自同一个Web服务的RPC接受的是:
CmYKEzgwMDAwMUFELTEzMjUyNzk5MTQySUZPT0QgJiBCRV...
我不太清楚和这事,因为我不知道它是什么,它保存生成来自一组字节。我试着用
NSData* data = [returnValue dataUsingEncoding:NSUTF8StringEncoding];
但[ProductProtoGroup parseFromData:data];
直接解析它NSData的,我得到一个InvalidProtocolBuffer
我检查在Java端原byte[]
什么字节字符串/十六进制表示,并没有关系” t匹配我从ws收到的字符串。
十六进制是0-F。也许每个字节都转换为char?不,那不匹配。
任何帮助,将不胜感激。
戴恩
的来源是什么值谜的NSString是编码? (例如,您在Java或C#中获得的字节数组)? – 2012-08-12 22:01:23
您使用的协议缓冲区的Objective-C端口是什么? – djf 2012-08-12 22:29:49