Java 在运行时修改AMF响应-如何?
我已经构建了一个简单的flex应用程序(使用BlazeDS),它通过使用flex远程处理调用java服务来显示“个人”详细信息。 我的Person类看起来像这样:Java 在运行时修改AMF响应-如何?,java,apache-flex,jakarta-ee,flex3,blazeds,Java,Apache Flex,Jakarta Ee,Flex3,Blazeds,我已经构建了一个简单的flex应用程序(使用BlazeDS),它通过使用flex远程处理调用java服务来显示“个人”详细信息。 我的Person类看起来像这样: class Person { public int age; public String name; } 作为一名java开发人员,我的理解如下: 当我在我的webapp中运行front flex应用程序时,会执行一个RPC调用,BlazeDS会努力调用正确的方法,以对象的形式获取结果,将对象转换为AMF格式(序列化)。然后,web
class Person {
public int age;
public String name;
}
作为一名java开发人员,我的理解如下:
当我在我的webapp中运行front flex应用程序时,会执行一个RPC调用,BlazeDS会努力调用正确的方法,以对象的形式获取结果,将对象转换为AMF格式(序列化)。然后,web/app服务器通过http将此响应发送回请求应用程序。flex应用程序现在执行反序列化以AMF格式接收的对象的任务,并以某种方式利用它
我的问题是:
我希望在响应到达Flex应用程序之前,通过修改person对象的属性来修改响应。我有一个过滤器在适当的地方做这件事。但是,我不确定如何反序列化AMF流、修改对象、将对象序列化回流/以某种方式重建流
有办法做到这一点吗?我应该从哪里开始
PS
如果问题太让人困惑,下面是一个简短的版本:
如何在内容类型为AMF-X的响应流到达使用java筛选器的flex应用程序之前修改它?自行序列化和反序列化AMF并不容易,因此一定要避免。更好的方法是在后端代码中将数据转换为正确的格式。从Flex调用后端的服务方法,然后在将数据发送回Flex之前获取数据并将其转换为正确的对象结构。要进一步了解James的回答,请使用spring之类的工具插入调用的返回并在那里干扰它(同样,在它被序列化之前)
基本上,您必须重新实现(反)序列化过程,并且好吧,这并不完全是您想要的,但是如果您只需要在测试时偶尔更改某些内容,那么有一个解决方案。Charles Proxy()允许您“手动”修改返回数据。这是我每天用来监控AMF流量的工具,因为它非常适合反序列化它,并以人类可读的格式显示它。有一个免费的版本你可以试试 有关如何编辑数据的简短说明: 0)安装Charles(包括firefox插件,如果您使用它 1) 从主菜单中选择代理->断点 2) 填写主机(您可以使用通配符-例如mydomain.com*) 3) 选中“响应”框 4) 呼叫服务器 5) 当数据返回时,应该触发断点。现在只需找到“编辑响应”选项卡,选择底部的“AMF”,就可以编辑任何需要的内容 希望这有帮助