我有一个带有Axis 1客户端的Axis 1 Web服务。一切都运行得很好,我从网络服务获得的数据是正确的。现在,需要将Web服务移动到使用Axis 2,我在Axis 1客户端上获取数据时遇到问题。我使用SOAPUI来查看我得到的响应格式。
使用Axis 1 Web服务,响应如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getInventoryResponse xmlns="http://webservices.com">
<getInventory>
<errorCode>10071</errorCode>
<inventory xsi:nil="true"/>
</getLastInventoryCountReturn>
</getInventoryResponse>
</soapenv:Body>
</soapenv:Envelope>
使用Axis 2 Web服务,响应如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getInventoryResponse xmlns:ns="http://webservices.com">
<ns:return xsi:type="ax21:Inventory" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax21="http://model.com/xsd">
<ax21:errorCode>10071</ax21:errorCode>
<ax21:inventory xsi:nil="true"/>
</ns:return>
</ns:getInventoryResponse>
</soapenv:Body>
</soapenv:Envelope>
如您所见,名为“errorCode”的元素的值为10071.我在两个Web服务上正确地在客户端上收到errorCode值。但是我有一个称为“库存”的复杂类型,我作为响应的一部分收到它(它没有出现在我上面包含的响应中,因为它需要一些时间来填充Web服务上的相应数据)。 InventoryItem包含不同数据类型(String,Calendar)的字段。我注意到,Axis 2 Web服务的响应包含<axs21>
xml标记,而在Axis 1 Web服务中,它不存在。所以我假设我在客户端有一个解析问题,响应来自Axis 2 Web服务。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
显然我做错了什么。将Web服务从Axis 1移动到Axis2时,我必须重新创建我的客户端代码。