我想在我的网络服务中返回一个字符串数组
我试过了:
<?php
require_once('nusoap/nusoap.php');
$server = new soap_server();
$server->configureWSDL('NewsService', 'urn:NewsService');
$server->register('GetAllNews',
array(),
array('return' => 'xsd:string[]'),
'urn:NewsService',
'urn:NewsService#GetAllNews',
'rpc',
'literal',
''
);
// Define the method as a PHP function
function GetAllNews()
{
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
return $stack;
}
但它不起作用。这个的正确语法是什么?
提前感谢您提供任何帮助
答案 0 :(得分:9)
首先需要定义一个描述字符串数组的新类型,如下所示:
$server->wsdl->addComplexType(
'ArrayOfString',
'complexType',
'array',
'sequence',
'',
array(
'itemName' => array(
'name' => 'itemName',
'type' => 'xsd:string',
'minOccurs' => '0',
'maxOccurs' => 'unbounded'
)
)
);
然后您可以使用tns:ArrayOfString
作为返回类型。
答案 1 :(得分:1)
该网站描述了一种返回复杂数据类型并使用C#接收它的好方法:http://sanity-free.org/125/php_webservices_and_csharp_dotnet_soap_clients.html
答案 2 :(得分:1)
返回数组数组时,您可能需要与Oliver不同的配置。例如,phfunc2php在nusoapcode.class.php文件(https://github.com/sylnsr/pgfunc2php/blob/master/nusoapcode.class.php)中使用此技术。它生成的代码如下所示:
$server->wsdl->addComplexType(
'ArrayOfArrays','complexType','array','',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')));
然后函数只需要返回“tnsArrayOfArrays:
$server->register(
'sel_signon_id_by_uuid',
array('user_uuid' => 'xsd:string'),
array('return'=>'tns:ArrayOfArrays'),
如果你想看到这个,上面提到的项目可以为你编译工作代码。