我正在尝试用 PHP 构建一个肥皂服务。我用于 Web 服务的 WSDL 是由 Visual Studio 2010 自动生成的(我只是使用 Visual Studio 创建 WSDL,实际的服务器是用 PHP 和 SoapServer 构建的)。正在处理对肥皂服务的请求,但是当我尝试返回一个字符串数组时,客户端没有得到任何结果。以下是 WSDL 的相关部分:
<s:element name="getGroups">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="code" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="getGroupsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="getGroupsResult" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
.
.
<wsdl:message name="getGroupsSoapIn">
<wsdl:part name="parameters" element="tns:getGroups" />
</wsdl:message>
<wsdl:message name="getGroupsSoapOut">
<wsdl:part name="parameters" element="tns:getGroupsResponse" />
</wsdl:message>
.
.
<wsdl:operation name="getGroups">
<wsdl:input message="tns:getGroupsSoapIn" />
<wsdl:output message="tns:getGroupsSoapOut" />
</wsdl:operation>
PHP服务器代码如下:
function getGroups($args)
{
return array('ArrayOfString' => array('hello world'));
}
$server = new SoapServer( 'admin.wsdl' );
$server->addFunction('getGroups');
try {
$server->handle();
}
catch (Exception $e) {
$server->fault('Sender', $e->getMessage());
}
我还尝试从 PHP getGroups函数中仅返回array('hello world'),但这也不起作用。有人可以帮我更正 PHP 代码以返回与我的 WSDL 定义匹配的字符串数组。