最后一天我一直在尝试返回一个可以由 ac#soap 客户端反序列化的有效响应。
唯一的问题是当 web 服务返回一个字符串数组时。
C# 客户端得到的错误是:
The specified type was not recognized: name='errorArray', namespace='urn:https://xxxxxxxx/index.php', at <errors xmlns=''>.
我正在使用 PHP Nusoap 生成 WSDL。
这是注册函数(我跳过了一些部分,因为我得到的错误只与“错误”结构有关):
$server->register(
'createEntity',
array('requests' => 'tns:inputCreateEntity'),
array(
'return' => 'tns:returnCreateEntity',
'errors' => 'tns:createEntityErrorArray'
),
'urn:'.$nameSpace,
'urn:'.$nameSpace.'#createEntity'
);
$server->wsdl->addComplexType(
'createEntityErrorArray',
'complexType',
'array',
'all',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:errorArray[]')),
'tns:errorArray'
);
$server->wsdl->addComplexType(
'errorArray',
'complexType',
'array',
'all',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')),
'xsd:string');
这是我的肥皂服务器返回的 XML 错误部分
<errors xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:errorArray[1]">
<item xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]">
<item xsi:type="xsd:string">GENERAL ERRORS :</item>
<item xsi:type="xsd:string">The request array must contain at least a valid array!</item>
</item>
</errors>