我正在编写一个Flex应用程序,它将BlazeDS充分用于Java服务器。我经常使用远程对象,但是我遇到了一个接收XML比返回对象更清晰,更快的实例。
通过BlazeDS返回XML非常简单。我正在使用Java上的Dom4j构建XML,并通过BlazeDS服务返回根元素。 BlazeDS将Dom4j对象转换为XML。
在Flex端接收此对象时,存在所有ObjectProxy对象而不是XML。我之前在HttpService调用中看过这个,为了解决这个问题,我将resultFormat更改为E4X。
但是,我无法在RemoteObject服务调用上设置resultFormat。
无论如何我可以将这些ObjectProxies转换为E4X格式的XML吗?
答案 0 :(得分:3)
此外,如果您将XML作为String或某种正式的XML类型返回,那么您可以将其转换为Flex中客户端的XML对象。
答案 1 :(得分:1)
回答你的问题:
使用远程服务,您经常使用AMFChannel。 AMFChannel使用二进制AMF 通过HTTP编码。如果不允许二进制数据,那么您可以使用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似乎也有类似的序列化器:
希望一些混乱有所帮助。