2

我正在编写一个充分利用 BlazeDS 到 Java 服务器的 Flex 应用程序。我经常使用远程对象,但我遇到过一个实例,接收 XML 比返回对象更干净、更快。

通过 BlazeDS 返回 XML 非常简单。我在 Java 上使用 Dom4j 构建 XML,并通过 BlazeDS 服务返回根元素。BlazeDS 为我将 Dom4j 对象转换为 XML。

在 Flex 端接收这个对象时,都是 ObjectProxy 对象而不是 XML。我之前在 HttpService 调用中看到过这个问题,为了解决这个问题,我将 resultFormat 更改为 E4X。

但是,我无法在 RemoteObject 服务调用上设置 resultFormat。

无论如何我可以将这些 ObjectProxies 转换为 E4X 格式的 XML 吗?

4

2 回答 2

3

此外,如果您将 XML 作为字符串或某种正式的 XML 类型返回,那么您可以在 Flex 的客户端将其转换为 XML 对象。

于 2009-03-13T17:58:09.170 回答
1

要回答您的问题:

对于远程服务,您经常使用 AMFChannel。AMFChannel 通过 HTTP 使用二进制 AMF 编码。如果不允许二进制数据,那么您可以使用 HTTPChannel,它是基于 HTTP 的 AMFX(XML 中的 AMF)。

http://livedocs.adobe.com/blazeds/1/javadoc/flex/messaging/io/amfx/package-summary.html

RemoteObject 的数据格式是二进制 AMF,因此如果您想使用 XML,也许您应该使用 WebService 或 HTTPService 类(AMF 会更快;如果使用 XML,可能会失去速度 - 不确定 AMFX)。

LiveCycle 似乎也有类似的序列化器:

http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/javadoc/flex/messaging/io/amfx/package-detail.html

希望一些混乱的帮助。

于 2009-03-13T13:22:24.403 回答