0

尝试与基于 PHP SOAP 的 Web 服务集成。客户给了我一个 WSDL 文件的 URL,这似乎符合W3C WSDL 标准

我正在使用高级对话框中的添加 Web 引用选项来添加引用。当我添加 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。

我已经搜索过,但无法明确找到相同的问题(或任何合适的答案)。

有任何想法吗?

4

1 回答 1

0

在这方面花费了相当多的时间之后,事实证明 WSDL 并不完美。我们的业务合作伙伴需要对 WSDL 进行一些小的更正,然后 Visual Studio 才能导入它。

问题是他们在元素上有一个minOccurs属性,这在那种情况下是无效的。

这里需要注意的是,一些在线验证器表示 WSDL 是有效的,我们尝试的 PHP 客户端也是如此。

然后,我们在JDK 1.6 + 中使用了WLIMPORT程序,它给出了 WSDL 中非常详细的错误列表,指出了问题的确切原因。

因此,我们的业务合作伙伴最终更正了规范,现在 Visual Studio 成功导入了 WSDL。

希望这可以帮助。

于 2013-10-24T08:43:16.047 回答