我正在编写一个PHP Web服务和一个函数。我想用PHP建立一个Web服务。我需要为这个Web服务生成WSDL描述,以便可以从I.e.访问它。视觉工作室。它将文档/搜索字符串作为输入,并推荐类似的文档作为输出。我返回一个带有第一个元素resultCode(int)的数组,它显示操作是成功(1)还是失败(0)。但是,第二个元素可以是一个错误消息(字符串),它告诉用户出了什么问题,或者是一个复杂的返回类型,如带有子元素的数组,用于不同的匹配文章,即 array(array(“heading”=>“article 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的松散打字让我对返回类型使用了一个糟糕的设计,我需要使用别的东西?
欢迎任何建议。
答案 0 :(得分:1)
你可以使用xsd:anytype
。实际上我不推荐它,因为基于类型的环境如.NET和Java将无法处理你的wsdl。
为了获得一个干净的解决方案,我重新考虑设计php诱惑你......;)
答案 1 :(得分:0)
您应该始终返回相同的结构。在发生故障的情况下,您应该像使用SOAP故障一样使用异常,就像在正常使用中一样: http://www.ibm.com/developerworks/webservices/library/ws-tip-jaxrpc.html
答案 2 :(得分:0)
您可以返回