Я передаю байтовый массив с java-сервера клиенту iPad в XML. Сервер использует xstream для преобразования байтового массива в XML с помощью EncodedByteArrayConverter, который должен преобразовать массив в Base 64. Используя xstream, я могу декодировать xml обратно в соответствующий байтовый массив в клиенте Java, но в клиенте 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]);
}
Есть идеи, что может пойти не так?