我正在编写一个 PHP Web 服务和一个函数。我想在 PHP 中建立一个 Web 服务。我需要为此 Web 服务生成 WSDL 描述,以便可以从 Ie Visual Studio 访问它。它将文档/搜索字符串作为输入,并推荐类似的文档作为输出。我返回一个带有第一个元素 resultCode (int) 的数组,它显示操作是成功 (1) 还是失败 (0)。然而,第二个元素可能是一条错误消息(字符串),它告诉用户出了什么问题,也可能是一个复杂的返回类型,例如一个包含不同匹配文章的子元素的数组,即 array( array("heading"=>"文章标题", "articleId"=>12345, "text"=>"文章正文"), array( ... ), ... )。我需要知道如何为该返回类型生成/编写 WSDL,或者如何在 NuSOAP 中执行此操作。你会怎么做?
这是我目前用来设置服务的一些代码。
$server->wsdl->addComplexType(
'returnStructBase',
'complexType',
'struct',
'all',
'',
array('resultCode' => array('name'=>'resultCode', 'type'=>'xsd:int'),
'resultData' => array('name'=>'resultData', 'type'=>'xsd:anyType')
)
);
$server->wsdl->addComplexType(
'returnStructArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType',
'wsdl:arrayType' => 'tns:returnStructBase[]'
)
),
'tns:returnStructArray'
);
$server->register("GetRecommendations", array('username'=>'xsd:string', 'password'=>'xsd:string','articleId'=>'xsd:string',
'text'=>'xsd:string', 'returnText'=>'xsd:boolean'), array('return'=>'tns:returnStructArray'), $namespace, $namespace . '#getRecommendations', 'rpc', 'encoded', ' ... ');
也许 PHP 的松散类型让我对返回类型使用了糟糕的设计,而我需要使用其他东西?
欢迎任何建议。