2010-04-13 10 views
6

me gustaría devolver una matriz de cadena en mis servicios web¿Puede nusoap devolver matriz de cadena?

He tryed:

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

pero no funciona. ¿Cuál es la sintaxis correcta para eso?

Gracias de antemano por cualquier ayuda

Respuesta

9

Primero tiene que definir un nuevo tipo que describe una matriz de cadenas de este modo:

$server->wsdl->addComplexType(
    'ArrayOfString', 
    'complexType', 
    'array', 
    'sequence', 
    '', 
    array(
    'itemName' => array(
     'name' => 'itemName', 
     'type' => 'xsd:string', 
     'minOccurs' => '0', 
     'maxOccurs' => 'unbounded' 
    ) 
) 
); 

continuación, puede utilizar tns:ArrayOfString como el tipo de retorno.

+1

¿Cómo convierto el tipo de datos de $ stack (una matriz simple de cadena en php) a ArrayOfString para que pueda obtener los datos de $ stack como ArrayOfString en mi código de cliente (C#)? –

+0

@Ankit: Sorry , no puedo ayudarte con eso. Escribí esto hace mucho tiempo. –

+0

@Computer Usuario devuelve el valor directamente y se emitirá automáticamente – user3980820

1

Al regresar matriz de matrices, es posible que tenga una configuración diferente a Oliver. Por ejemplo phfunc2php usa esta técnica en el archivo nusoapcode.class.php (https://github.com/sylnsr/pgfunc2php/blob/master/nusoapcode.class.php). El código que genera se ve así:

$server->wsdl->addComplexType(
    'ArrayOfArrays','complexType','array','', 
    'SOAP-ENC:Array', 
    array(), 
    array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]'))); 

y luego las funciones simplemente tiene que volver "tnsArrayOfArrays:

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

El proyecto mencionado anteriormente puede compilar el código de trabajo para que, en caso de que desee ver esto

Cuestiones relacionadas