我正在使用一个使用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所以我猜它指的是那些,但实际上不明白如何解决这个问题......
答案 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消息中无效。