[英]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.