在请求和响应之间使用不同的SOAP命名空间/版本是否合法?

时间:2010-03-26 15:01:25

标签: xml web-services soap xml-namespaces soapui

  

第三次编辑:我现在认为这个问题是由于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响应”和“非SOAP错误”。失败标记位于“SOAP响应”旁边,并带有以下消息:

  

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

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

2 个答案:

答案 0 :(得分:1)

好的,编辑过的问题似乎确实有答案:“这取决于。”

W3C: Version Transition From SOAP/1.1 to SOAP Version 1.2

答案 1 :(得分:0)

两个名称空间都是完全有效的(您甚至可以导航到每个名称空间以查看模式定义)。听起来问题就在于您的Soap UI测试实用程序,并使用请求中的命名空间处理响应。

服务描述请求和响应有效负载,命名空间有助于定义该定义。虽然在两者之间混合/匹配这些定义似乎很糟糕,但它仍然有效。

即使模式在请求和响应之间混合,这些只是解释请求和响应值的帮助。