PHP SOAP:已在WSDL文件中定义的属性

时间:2012-10-23 12:49:02

标签: php attributes wsdl defined

我正在使用一个使用SoapUI而不使用PHP Soap的wsdl文件

代码:

<?php
$WSDL     = new SoapClient('Foo/bar.wsdl');
?>

堆栈追踪:

  

致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析   架构:属性   'http://url.com/LGW/2009/:unitOfMeasure'已定义   在Foo.php中:2   堆栈跟踪:#0   Foo.php(2):   SoapClient-&gt; SoapClient('Foo / bar.wsdl',数组)#1 {main}抛出   Foo.php在线   2

任何人都知道PHP-SOAP lib试图告诉我什么。 WSDL文件应该是有效的(至少PEAR SOAP和SoapUI都可以正常工作)。

WSDL包含多个<s:attribute ref="tns:unitOfMeasure"/> -lines所以我猜它指的是那些,但实际上不明白如何解决这个问题......

1 个答案:

答案 0 :(得分:1)

WSDL文件有错误的指示,建议遵循XML

<ns:foo unitOfMeasure="foo" ns:unitOfMeasure="invalid">
  <ns:bar unitOfMeasure="foo" ns:unitOfMeasure="invalid"></ns:bar>
</ns:foo>

这给出了已定义的错误。 ns:由于名称空间声明,unitOfMeasure属性被视为唯一属性,无法重新定义。

我从WSDL文件中删除了这些行,然后事情就好了。

似乎Java,PEAR和可能的.NET SOAP库将接受这种指令,尽管它们在SOAP / WSDL消息中无效。