2

最后一天我一直在尝试返回一个可以由 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>
4

0 回答 0