我正在将一个字节数组从 Java 服务器传递到 XML 中的 iPad 客户端。服务器正在使用 xstream 使用EncodedByteArrayConverter将字节数组转换为 XML,这应该将数组转换为 Base 64。使用 xstream,我可以在 java 客户端中将 xml 解码回正确的字节数组,但在 iPad 客户端中,我收到一个无效的长度错误。为了进行解码,我使用了本页底部的代码。字符串的长度确实不是4 的倍数,所以我的字符串一定有一些奇怪的地方——尽管由于 xstream 可以很好地解码它,我猜我需要在 iPad 端做一些事情来让它解码。我尝试在字符串末尾切断填充以将其缩小到正确的大小,这确实允许解码器工作,但我最终得到的 JPG 具有无效的标题,并且无法显示。
在服务器端,我使用以下代码:
Object rtrn = getByteArray();
XStream xstream = new XStream();
String xml = xstream.toXML(rtrn);
在客户端,我从 XML 解析回调中调用上述解码器,如下所示:
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
NSLog(@"Converting data; string length: %d", [string length]);
//NSLog(@"%@", string);
NSData *data = [Base64 decode:string];
NSLog(@"converted data length: %d", [data length]);
}
有什么想法可能会出错吗?