Apache flex Flex:Soap解码出错了

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

我有两个关于Flex(4.6)SoapDecoder的主要问题,我真的不能动脑

第一个主要问题是我的ArrayCollection被解码并插入属性的第一项,而不是属性的值

所以我最终得到了一个像这样的结构

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>