繁体   English   中英

使用NuSOAP返回两种类型

[英]Return two types with NuSOAP

我有一个使用NuSOAP的工作webService。 现在,我必须在返回请求的数据之前进行验证。 如果一切正常,我会正常返回,否则我想返回一条字符串消息,解释为什么我没有提供所要求的信息。 问题是我无法为NuSOAP的RegisterFunction添加两种不同类型的返回。 如果我将ComplexType添加为return,则无法返回String。

该函数不能有两个返回值。 您应该将error-message-string添加到复杂类型。 如果您不想触摸复杂类型,那么您应该创建另一个包含数据类型和字符串的复杂类型。

示例 - 您现在拥有的复杂类型:

$server->wsdl->addComplexType('myData','complexType','struct','all','',
    array(  'important'  => array('name' => 'important','type' => 'xsd:string'),
            'stuff'      => array('name' => 'stuff','type' => 'xsd:string')
    )
);

额外的复杂类型:

$server->wsdl->addComplexType('package','complexType','struct','all','',
    array(  'data'      => array('name' => 'data','type' => 'tns:myData'),
            'errormsg'  => array('name' => 'errormsg','type' => 'xsd:string')
    )
);

注册功能:

$server->register(
                'getData',     
                array('validation'=>'xsd:string'), 
                array('return'=>'tns:package'),
                $namespace,
                false,
                'rpc',
                'encoded',
                'description'
);

功能:

function GetData($validation)
{
    if($validation == "thegoodguy") {
        $result['data'] = array(
            "important"    => "a top secret information",
            "stuff"        => "another one"
        );
        $result['errormsg'] = null;
    } else {
        $result['data'] = null;
        $result['errormsg'] = "permission denied!";
    }
    return $result;
}

这样客户端可以尝试分析收到的数据,如果它是null,那么他会显示错误消息。

首先需要定义一个描述字符串数组的新类型,如下所示:

$server->wsdl->addComplexType(
  'ArrayOfString',
  'complexType',
  'array',
  'sequence',
  '',
  array(
    'itemName' => array(
      'name' => 'itemName', 
      'type' => 'xsd:string',
      'minOccurs' => '0', 
      'maxOccurs' => 'unbounded'
    )
  )
);

然后你可以使用tns:ArrayOfString作为返回类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM