Может ли nusoap вернуть массив строк? - PullRequest
6 голосов
/ 13 апреля 2010

Я хотел бы вернуть массив строк в моих веб-сервисах

Я пробовал:

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

но это не работает. Какой правильный синтаксис для этого?

Заранее спасибо за любую помощь

Ответы [ 3 ]

9 голосов
/ 14 апреля 2010

Сначала необходимо определить новый тип, который описывает массив строк, например:

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

Тогда вы можете использовать tns:ArrayOfString в качестве типа возврата.

1 голос
/ 13 апреля 2013

При возврате массива массивов вам может потребоваться другая конфигурация от Оливера. Например, 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'),

Упомянутый выше проект может скомпилировать для вас рабочий код, если вы захотите это увидеть.

1 голос
/ 08 сентября 2011

Этот сайт описывает хороший способ вернуть сложные типы данных и получить их с помощью C #: http://sanity -free.org / 125 / php_webservices_and_csharp_dotnet_soap_clients.html

...