XML で Java サーバーから 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]);
}
何がうまくいかないのでしょうか?