今回は前回のFlashのオブジェクトをJavaのオブジェクトに変換するの逆です。
Javaから、Flashにデータを変換します。
Date date = new Date();
Amf3Output output = new Amf3Output(new SerializationContext());
output.reset();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
output.setOutputStream(baos);
output.writeObject(date);
output.flush();
byte[] data = baos.toByteArray();
Base64 base64 = new Base64();
String base64str = base64.encodeToString(data);
// ここでBASE64のデータをXMLSocketを通じてFlash側に渡してあげます。
e.getChannel().write(base64str);
// これを忘れてはいけません。これがないと、XMLSocketは終わりを認識できません。
e.getChannel().write("\0");
前回、Base64の処理はBlazeDSについていたjarを利用しましたが、
Jakartaのcommons-codecに変更しました。
こんどはFlash側ですが、こちらは、
var str:String = event.data as String; var bytes:ByteArray; var b64:Base64Decoder = new Base64Decoder(); b64.decode(str); bytes = b64.flush(); var obj:Object = bytes.readObject();
とこんな感じになります。
非常に簡単にできました。


