必需元素不包含wsu:id?

时间:2010-04-16 13:21:52

标签: security soap jboss web-services soapui

我是soapUI 3.5的新手。我尝试了一些wsdl,它获得了对jboss 4.2.1上部署的Web服务的安全性。

在soapUI上运行测试时。它给了我

     <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
     <env:Header/>
     <env:Body>
     <env:Fault>
     <faultcode>env:Server</faultcode>
     <faultstring>org.jboss.ws.core.CommonSOAPFaultException: Required element did not contain a wsu:id.</faultstring>
     </env:Fault>
     </env:Body>
      </env:Envelope>

有什么建议吗?

提前致谢

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我在JBoss Forum

中找到了解决方法

JBoss WS客户端在元素中生成一个wsu:Id属性,SoapUI不会自动插入。这是我的默认SoapUI请求的样子(使用XML选项卡查看/编辑):

<soapenv:Header/>
  <soapenv:Body>
    <ser:getCutOffTime/>
  </soapenv:Body>

如果您在请求的正文中包含“虚拟”wsu:Id,则可以使用SoapUI。请务必包含命名空间:

<soapenv:Header/>
  <soapenv:Body wsu:Id="element-1-1272320911598-1522000" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <ser:getCutOffTime/>
  </soapenv:Body>

这解决了我的问题。我正在使用JBoss 5.0。

答案 1 :(得分:0)

我不相信这是一个安全例外。我相信您的WSDL格式错误或与soapUI测试工具不兼容。其他测试工具或客户端库也可能会抛出异常。这个WSDL是自动生成的吗?应该是......

答案 2 :(得分:0)

您运行的服务器不喜欢您的请求。可能是因为SoapUI使用了构建样本?作为占位符,或者也许是“lorem ipsum”的价值观。用有效数据替换它们,它应该通过。

如果您有一个可以与该服务器通信的应用程序,通常可以将这些请求复制/粘贴到SoapUI中。

此外,如果您无法捕获这些示例请求,请在PC上运行Fiddler,它将充当代理,然后它将为您提供捕获示例有效负载的简便方法。 SoapUI也可以做到这一点,但Fiddler让它变得非常简单(自动配置你的WinInet以将自己用作代理)。