我目前正在将一个大型项目从 Flex 3 迁移到 Flex 4.5。我遇到的问题是网络通信:我们使用的是嵌入在 AMF3 中的自定义协议,但 flash.net.NetConnection 发送的消息似乎不可读。
我们的 Java 后端使用一些 BlazeDS 类来反序列化消息,即 flex.messaging.io.amf.AmfMessageDeserializer.AmfMessageDeserializer,我可以使用解码 AMF3 的 Charles Web Proxy 监控网络流量。下面的非常简单的代码发送一条消息,当在 Flex 3.5 中编译时,Charles 可以解码,但在 Flex 4.5 中不可以(我收到“无法解析数据(com.xk72.amf.AMFException:不支持的 AMF3 数据包类型 17 在 26”) )。
import mx.controls.Alert;
private function init():void
{
var pdl : Dictionary = new Dictionary();
var connection : NetConnection = new NetConnection();
connection.connect("http://localhost");
var responder : Responder = new Responder(result);
connection.call("net", responder, pdl);
}
private function result(pdl : Object) : void {
Alert.show("coucou", "hello");
}
我已经在 localhost:80 设置了一个 apache 服务器来测试它。
有没有人在 Flex 4.5 中使用过 NetConnection 并遇到反序列化问题?你是怎么解决的?
谢谢,
丹尼尔