我正在尝试使用Axis2连接到SOAP Web服务。这在以前在Axis 1工作,但2导致问题。我使用wsdl2java
重新生成了Java代码,该代码为Axis2生成了存根,但是在处理服务器响应的元素时出现“意外的子元素值”时,该代码已经崩溃了。axis2“意外的子元素值”
问题的WSDL文档的片段是:
<complexType name="A">
<sequence>
<element name="a" type="xsd:base64Binary" minOccurs="1" maxOccurs="1" nillable="false" />
<element name="b" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="c" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="d" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="e" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="f" type="xsd:string" minOccurs="1" maxOccurs="1" />
</sequence>
</complexType>
返回的响应如下所示:
<stuff>
<a>dsfusdbifsdisuibvuidnfuisndfvl\sbvuidn</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>dsfusdbifsdisdfsfsdfsdfuibvuidnfuisndfvl\dfgd</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>dsfusdbifsdisuibvuidnfuisndfvl\sdfsdfvv</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>wwasdfgfbdfb\sbv==uidn</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
之类的事情。这些<stuff>
块中的大多数处理正常,但最后一个在<b>
上出现上述错误。调试代码时,它失败,因为reader.isStartElement()
返回false,new javax.xml.namespace.QName("","b").equals(reader.getName())
为false - reader.getName()
返回“a”。调试进一步,reader.currentElement
报告“字符串”,而不是通常返回的包装对象类型。我已经用Axiom 1.2.7和1.2.8试了这个 - 两者似乎都遭受同样的问题。这是一个已知的错误,还是任何人都可以揭示可能发生的事情?
我意识到这是一个古老的问题..但你如何切换绑定? – 2012-06-24 22:33:59