尝试与基于PHP SOAP的Web服务集成。客户端给了我一个WSDL文件的URL,它似乎向W3C Standard for WSDL确认。
我正在使用高级对话框中的添加网络参考选项添加参考。当我添加URL时,对话框中的Web浏览器显示WSDL规范中的两个方法,但右侧的状态区域中有一条错误消息,并且添加引用按钮被禁用
错误讯息:
The document at the url http://www.NAMEHERE.com/NAME/xml/test.php?wsdl was not
recognized as a known document type.
The error message from each known type may help you fix the problem:
- Report from 'XML Schema' is 'The root element of a W3C XML Schema should be <schema> and its nam
如果我通过在线WSDL验证器运行WSDL,它似乎是正确的,就像我说的那样,它似乎符合标准。
此外,我尝试使用WSDL.EXE命令行并尝试使用SOAP,SOAP12,HTTPGET和HTTPPOST协议,每次都会收到相同的错误消息。
WSDL摘录在这里:
<?xml version="1.0" encoding="ISO-8859-1"?>
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://www.NAMEHERE.com/NAME/xml/namespace"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://www.NAMEHERE.com/NAME/xml/namespace">
<types>
<xsd:schema targetNamespace="http://www.NAMEHERE.com/NAME/xml/namespace">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
<xsd:complexType name="AddressWO">
....
cilent表示他们没有遇到任何其他合作伙伴的问题,他们都能够成功整合。虽然,它们是PHP到PHP。
我搜索了SO并且无法找到相同的问题明确(或任何合适的答案)。
有什么想法吗?
答案 0 :(得分:0)
在花了相当多的时间之后,事实证明WSDL并不完美。在Visual Studio导入之前,我们的业务合作伙伴需要对WSDL进行一些小的修正。
问题是他们在元素上有一个 minOccurs 属性,在该场景中无效。
这里要注意的是,一些在线验证器表示WSDL是有效的,我们尝试的PHP客户端也是如此。
然后,我们在 JDK 1.6 +中使用了 WLIMPORT 程序,这给出了WSDL中非常详细的错误列表,指出了问题的确切原因。
因此,我们的业务合作伙伴在最终更正了规范,现在Visual Studio成功导入了WSDL。
希望这有帮助。