Я разработчик .NET, но у меня возник вопрос, не связанный с .NET
Пожалуйста, имейте это в виду, даже если мой вопрос звучит очень банально.
Это мой вопрос:
У нас есть браузер в SWF, который общается с расширением Java
Это сделано с использованием Smartfox Server (используется для приложений MMO)
Из swf мы берем часть экрана как «Byte Array» в сценарии действия (3).
А в Java мы вызываем функцию, которая преобразует ByteArray в Image и затем сохраняет его.
Наш Java-разработчик обнаружил ошибку
java.lang.IllegalArgumentException
при выполнении функции Java.
Итак, в основном я хотел бы знать следующее:
Как принять байтовый массив типа объекта из ActionScript в Java?
Какой тип объекта Java сопоставлен с байтовым массивом в ActionScript?
Осмелюсь сказать, что преобразование легко.
Обновление:
Код в разделе ActionScript
public function savePhoto(uName:String, ba:ByteArray, descr:String):void{
var obj:Object = {};
obj.arr = ba;
obj.desc = descr;
sfsConnectobj.photoSectionSave(obj,"save");
}
public function photoSectionSave(targetObject:Object,type:String) {
sfs.sendXtMessage("trialjava", "save", targetObject);
}
Первая функция вызывает расширение SmartFox в Java.
Название расширения "trialjava.js"
Java-код, который принимает функцию:
public void handleRequest(String cmd, ActionscriptObject ao, User u, int fromRoom)
{
try {
ActionscriptObject arr = ao.getObj("arr");
String dirName="C:\\";
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos;
oos = new ObjectOutputStream(bos);
oos.writeObject(ao.getObj("arr"));
oos.flush();
oos.close();
bos.close();
byte [] data = bos.toByteArray();
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(data));
ImageIO.write(imag, "jpg", new File(dirName,"snap.jpg"));
}
catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Array reading not succesful. Error is: "+e);
}
}
Похоже, что было небольшое несоответствие при получении объектов с помощью Java.
Теперь ошибка другая.
Чтение массива не удалось. Ошибка:
java.io.NotSerializableException:
it.goto
andplay.smartfoxserver.lib.ActionscriptObject
С уважением,
naveenj