Web services nusoap能否返回字符串数组?

Web services nusoap能否返回字符串数组?,web-services,nusoap,Web Services,Nusoap,我想在我的web服务中返回一个字符串数组 我试过: <?php require_once('nusoap/nusoap.php'); $server = new soap_server(); $server->configureWSDL('NewsService', 'urn:NewsService'); $server->register('GetAllNews', array(), array('return' => 'xsd:string[]'), 'ur

我想在我的web服务中返回一个字符串数组

我试过:

<?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;
}

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

$server->wsdl->addComplexType(
  'ArrayOfString',
  'complexType',
  'array',
  'sequence',
  '',
  array(
    'itemName' => array(
      'name' => 'itemName', 
      'type' => 'xsd:string',
      'minOccurs' => '0', 
      'maxOccurs' => 'unbounded'
    )
  )
);
$server->wsdl->addComplexType(
    'ArrayOfArrays','complexType','array','',
    'SOAP-ENC:Array',
    array(),
    array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')));

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

此站点介绍了一种返回复杂数据类型并使用C#接收数据的好方法:

当返回数组数组时,您可能需要与Oliver不同的配置。例如,phfunc2ppp在nusoapcode.class.php文件()中使用此技术。它生成的代码如下所示:

$server->wsdl->addComplexType(
  'ArrayOfString',
  'complexType',
  'array',
  'sequence',
  '',
  array(
    'itemName' => array(
      'name' => 'itemName', 
      'type' => 'xsd:string',
      'minOccurs' => '0', 
      'maxOccurs' => 'unbounded'
    )
  )
);
$server->wsdl->addComplexType(
    'ArrayOfArrays','complexType','array','',
    'SOAP-ENC:Array',
    array(),
    array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')));
然后函数只需返回“tnsarrayofarray:

$server->register(
    'sel_signon_id_by_uuid',
    array('user_uuid' => 'xsd:string'),
    array('return'=>'tns:ArrayOfArrays'),

上面提到的项目可以为您编译工作代码,如果您想看到这一点。

如何将$stack(php中的一个简单字符串数组)的数据类型转换为ArrayOfString,以便在客户端代码(C#)中将$stack的数据作为ArrayOfString获取?@Ankit:对不起,我帮不了你。这是我很久以前写的。@Computer User你直接返回值,它将自动转换此站点的代码与WCF一起工作。不要使用SEQUENCE(将composition参数保留为AddComplexType为空),而是使用限制类型“SOAP-ENC:Array”。