【发布时间】:2011-09-09 10:49:07
【问题描述】:
我有一个带有 Axis 1 客户端的 Axis 1 Web 服务。一切都运行良好,我从 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 值。但是我有一个名为“Inventory”的复杂类型,我收到它作为响应的一部分(它没有出现在我上面包含的响应中,因为我需要一些时间来填充 Web 服务上的适当数据)。 InventoryItem 包含不同数据类型(字符串、日历)的字段。我注意到来自 Axis 2 Web 服务的响应包含 <axs21> xml 标记,而在 Axis 1 Web 服务中,它不存在。所以我假设我在客户端遇到了来自 Axis 2 Web 服务的响应的解析问题。
有谁知道我该如何解决这个问题?
【问题讨论】:
-
您看到 Axis2 生成的 wsdl 有哪些不兼容之处? Axis2 默认生成 doc/lit 类型的 wsdl。这应该适用于任何肥皂框架。
-
我已经编辑了我的帖子以更好地描述问题。请检查一下,让我知道您的想法。
-
我假设我有问题是什么意思?看起来很有可能会出问题,但你没有测试过?
-
@MaartenBodewes 我想如果你理解了他想说的本质,然后你解决了他的问题,我认为这将被视为一种巨大的荣誉,而实际上绝不是一种破坏性的行为。实际上,您帮助他提高语言技能,这对您来说微不足道,但对他来说却很难。如果有人用异类的结构来表达不清楚的英语,那不是因为他有异类的想法。他和母语者有同样的想法,只是他无法完美地沟通。 (顺便说一句,如果他对您的更改不满意,他随时准备不接受或恢复更改。)
-
这个问题是四年前提出的,当时我对 Web 服务和 Web 服务客户端的概念还很陌生。从那以后我已经走了很长一段路。我选择关闭它的原因是因为它目前的结构/问题,我完全相信它不会帮助任何人解决任何问题。 @peterh 无法清楚地解释问题所在并不一定意味着我对该语言没有很好的掌握。这也可能意味着当时我自己并不了解这个问题。