gpt4 book ai didi

apache-flex - 从 Flex 3 迁移到 Flex 4.5 : problem with network format

转载 作者:行者123 更新时间:2023-12-05 01:18:14 27 4
gpt4 key购买 nike

我目前正在将一个大型项目从 Flex 3 迁移到 Flex 4.5。我遇到的问题是网络通信:我们使用的是嵌入在 AMF3 中的自定义协议(protocol),但 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 遇到过反序列化问题?你是怎么解决的?

谢谢,

丹尼尔

最佳答案

AMF3 有许多可以序列化的不同核心类型。其中一个核心类型是过去一两年中 AMF3 的新类型,Dictionary,它的“数据包类型”为 17,因此出现错误消息。我不确定为什么 Flex 3 会将其序列化为 Dictionary 以外的其他内容,而 Flex 4.5 会将其序列化为新的 Dictionary 类型,但您收到错误消息是因为您的 BlazeDS 后端不支持新的 Dictionary 类型。

解决方案要么找出它在 Flex 3 中发送的内容并切换到它,要么升级 BlazeDS(去年 BlazeDS 似乎为字典 http://forums.adobe.com/thread/684487 添加了一个补丁)。

编辑:没有意识到错误出在查尔斯身上。 Charles 可能没有添加对 Dictionary 的支持,因为它不是记录的 AMF3 规范的一部分。您是否尝试过 Charles 的测试版?

关于apache-flex - 从 Flex 3 迁移到 Flex 4.5 : problem with network format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com