Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时修改AMF响应-如何?_Java_Apache Flex_Jakarta Ee_Flex3_Blazeds - Fatal编程技术网

Java 在运行时修改AMF响应-如何?

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

我已经构建了一个简单的flex应用程序(使用BlazeDS),它通过使用flex远程处理调用java服务来显示“个人”详细信息。 我的Person类看起来像这样:

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”,就可以编辑任何需要的内容

希望这有帮助