【问题标题】:Can nusoap return array of string?nusoap 可以返回字符串数组吗?
【发布时间】:2011-02-07 09:54:11
【问题描述】:

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

我试过了:

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

但它不起作用。正确的语法是什么?

提前感谢您的帮助

【问题讨论】:

    标签: web-services nusoap


    【解决方案1】:

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

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

    那么你可以使用tns:ArrayOfString作为返回类型。

    【讨论】:

    • 如何将 $stack 的数据类型(php 中的简单字符串数组)转换为 ArrayOfString 以便我可以在客户端代码(C#)中将 $stack 的数据作为 ArrayOfString 获取?
    • @Ankit:抱歉,无法帮助您。这是我很久以前写的。
    • @Computer 用户你直接返回值会自动转换
    【解决方案2】:

    该站点描述了一种返回复杂数据类型并使用 C# 接收它的好方法:http://sanity-free.org/125/php_webservices_and_csharp_dotnet_soap_clients.html

    【讨论】:

    • 此站点的代码适用于 WCF。不要使用 SEQUENCE(将 AddComplexType 的组合参数留空),而是使用限制类型“SOAP-ENC:Array”。
    【解决方案3】:

    返回数组数组时,您可能需要与 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'),
    

    如果你想看的话,上面提到的项目可以为你编译工作代码。

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 2011-10-03
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多