2

第三次编辑:我现在认为这个问题是由于伪装成命名空间问题的 SOAP 版本不匹配(1.1 请求,1.2 响应)。 混合版本是违法的,还是只是糟糕的风格?如果我不能更改我的 SOAP 版本或服务,我是否完全不走运?

第二次编辑:澄清错误信息,并试图减少“tl;dr”-ness。

编辑:[链接已删除,不相关]

使用soapUI,我发送的请求以:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ...

并得到以以下开头的响应:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" ...

我知道该服务正在获取信息,因为下线的流程正在运行。但是,我的soapUI 测试步骤失败了。它有两个活动断言:“SOAP Response”和“Not SOAP Fault”。失败标记位于“SOAP 响应”旁边,并带有以下消息:

第 -1 行:元素信封@ http://www.w3.org/2003/05/soap-envelope不是有效的信封@ http://schemas.xmlsoap.org/soap/envelope/文档或有效替换。

我尝试混合和匹配命名空间前缀和架构 URL。更改前缀似乎没有效果;更改 URL 会导致VersionMismatch错误。我也尝试过使用替换组,但这似乎不合法。

4

2 回答 2

2

两个命名空间都完全有效(您甚至可以导航到每个命名空间以查看架构定义)。听起来好像问题出在您的 Soap UI 测试实用程序上,并使用来自请求的命名空间处理响应。

服务描述了请求和响应负载,命名空间有助于定义该定义。虽然在两者之间混合/匹配这些定义似乎是一种不好的形式,但它仍然有效。

尽管模式在请求和响应之间混合在一起,但它们只是解释请求和响应值的帮助者。

于 2010-03-27T02:58:34.337 回答
2

好的,编辑后的问题似乎有一个答案:“这取决于。”

W3C:从 SOAP/1.1 到 SOAP 版本 1.2 的版本转换

于 2010-04-01T14:51:49.963 回答