【发布时间】:2011-05-20 11:30:40
【问题描述】:
背景:
我需要使用存在几个问题的现有 Web 服务(SOAP over http):
1) 服务器上的 wsdl 甚至不像他们的文档中描述的 web 服务,其中包含一个完全不同的 wsdl 文件
2) 他们的文档提供的 wsdl 文件似乎接近于描述服务器上的 Web 服务,但是当我使用 cxf 生成 java 客户端代码并使用它来访问 Web 服务时,cxf 会抛出如下异常
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://us-labs.companyxyz.com/", local:"searchResponse"). Expected elements are <{http://companyxyz.com/xyz-xml/2.0/}searchResponse>
... 33 more
我不是 SOAP 专家,但假设这意味着他们响应中的名称空间与 wsdl 中定义的名称不匹配。
由于我的应用程序是用 java 编写的,因此我能够使用 commons http 客户端和手工制作的 SOAP 请求进行连接并获得响应,所以最坏的情况下我可以回退到那个并解析响应以获得我需要的东西。
我的问题:
- 我是否正确解释了异常?
- 如果没有:关于如何调试此问题的任何建议?
- 如果是:任何人都可以提出更好的替代方法来手动处理 http 请求和手动解析 xml 吗? (不幸的是,获得正确的 wsdl 不是一种选择)
提前致谢。
【问题讨论】:
-
您是否尝试过将
?wsdl粘贴到端点URI 上? -
是的。不幸的是,它返回的 wsdl 与 Web 服务不太相似。