Apache flex Flex:Soap解码出错了
我有两个关于Flex(4.6)SoapDecoder的主要问题,我真的不能动脑 第一个主要问题是我的ArrayCollection被解码并插入属性的第一项,而不是属性的值 所以我最终得到了一个像这样的结构Apache flex Flex:Soap解码出错了,apache-flex,soap,flex4,wsdl,flex4.5,Apache Flex,Soap,Flex4,Wsdl,Flex4.5,我有两个关于Flex(4.6)SoapDecoder的主要问题,我真的不能动脑 第一个主要问题是我的ArrayCollection被解码并插入属性的第一项,而不是属性的值 所以我最终得到了一个像这样的结构 valueObject |- children():ArrayCollection |- [0] ArrayCollection |- [0] SomeObject |- [1] SomeObject
valueObject
|- children():ArrayCollection
|- [0] ArrayCollection
|- [0] SomeObject
|- [1] SomeObject
...
而不是预期的
valueObject
|- children():ArrayCollection
|- [0] SomeObject
|- [1] SomeObject
...
我遇到的第二个主要问题,这是一个奇怪的问题,就是一些对象没有被赋值,而另一些对象却被赋值
Bar对象有两个属性和两个对象
酒吧
-foo():foo
-tappas():tappas
foo在tappas保持为空时完美地获取其值。
这两个对象都在WSDL中声明并在SchemaTypeRegistry中注册,如下所示:
SchemaTypeRegistry.getInstance().registerClass(new QName("http://test.com/service","tappas"),Tappas);
SchemaTypeRegistry.getInstance().registerClass(new QName("http://test.com/service","foo"),Foo);
我已经花了两天时间试图解决这个问题,但我找不到一个像样的解释。
我的代码(我正在使用sdkwebservice)和WSDL对我来说都很好 我找到了。
我的理论是,当Flex Soap解码器遇到他不期望的元素时,它会跳过整个定义并继续前进。
似乎解码器开始解码基类并从基类向上移动。
当一个元素和WSDL中的预期元素不匹配时,例如,由于响应中缺少标记,SOAP解码器会跳过对其余元素的解码,并继续处理它最初处理的类
例如:
WSDL:
如果您的回答是:
<Animal xmlns:s01="http://www.world.com/AnimalKingDom" xsi:type="s01:Dog">
<Name>Snowy</Name>
<Sound>Barking</Sound>
<HouseTrained>true</HouseTrained>
</Animal>
下雪的
剥皮
真的
将正确设置属性Name
,但解码器不会设置Race
和Sound
。
请注意,housetained
-属性将由解码器正确设置,因为当它遇到基类中缺少的标记时,它在那里停止解码,并继续使用Dog
类的其余部分
<Animal xmlns:s01="http://www.world.com/AnimalKingDom" xsi:type="s01:Dog">
<Name>Snowy</Name>
<Sound>Barking</Sound>
<HouseTrained>true</HouseTrained>
</Animal>