我正在嘗試使用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