我是.NET开发人员,但我遇到的问题与.NET无关
请记住这一点,即使我的问题听起来很琐碎。
这是我的问题:
我们在浏览器中有一个SWF,它与Java扩展进行通信。
使用smartfox服务器完成(用于MMO应用程序)
从SWF中,我们在操作脚本(3)中将屏幕的一部分作为“字节数组”。
在Java中,我们调用一个函数,它将BytErar转换成图像,然后保存它。
我们的Java开发人员遇到了错误
java.lang.illegalargument异常
当Java函数执行时。
所以基本上,我想知道的是:
如何从Java中的ActionScript接受对象类型字节数组?
在ActionScript中映射到字节数组的Java对象类型是什么?
我敢说,转换部分很容易。
更新:
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);
}
第一个函数调用Java中的StaskFox扩展。
扩展名为“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(Java.IO.NotSerializableException):
转到
andplay.smartfoxserver.lib.actionscriptObject
当做,
纳维恩