nusoap如何返回数组?

发布于 2024-10-13 08:09:14 字数 1374 浏览 4 评论 0原文

我编写的 server.php 如下:

require_once("lib/nusoap.php");
require_once("connect.php");

$server = new soap_server;

$server->configureWSDL('server', 'urn:RM');

$server->wsdl->addComplexType(
    'game',
    'complexType',
    'struct',
    'all',
    '',
    array(
     'eventId'=>array('name'=>'eventId','type'=>'xsd:int'),
     'eventName'=>array('name'=>'eventName','type'=>'xsd:string'))
    );

$server->register('gamelist',
    array('id'=>'xsd:int'),
    array('return'=>'tns:game'),
    'urn:RM',
    'urn:RM#gamelist',
    'rpc',
    'encoded',
    'Get Games Info');

function gamelist($id){
 $query="select eventId, eventName from jos_games where parentId='$id'";
 $rs=mysql_query($query);

 $game=array();
 while($row=mysql_fetch_assoc($rs)){
  $game[]= $row;
 }
 //print_r($game);
 return $game;
}


$HTTPRAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA:"";  
$server->service($HTTP_RAW_POST_DATA);

client.php 如下:

require_once("lib/nusoap.php");

$client =  new nusoap_client('http://sonia.ecisoft.com/soap/server.php');


if($err=$client->getError()){
 echo 'Error:'.$err;
}

$id=1;
$return = $client->call('gamelist', array('id'=>$id));

print_r($return);

我无法从 client.php 获得返回。我想列出 eventId、eventName 的行。 请帮助我,谢谢。

I write server.php as below:

require_once("lib/nusoap.php");
require_once("connect.php");

$server = new soap_server;

$server->configureWSDL('server', 'urn:RM');

$server->wsdl->addComplexType(
    'game',
    'complexType',
    'struct',
    'all',
    '',
    array(
     'eventId'=>array('name'=>'eventId','type'=>'xsd:int'),
     'eventName'=>array('name'=>'eventName','type'=>'xsd:string'))
    );

$server->register('gamelist',
    array('id'=>'xsd:int'),
    array('return'=>'tns:game'),
    'urn:RM',
    'urn:RM#gamelist',
    'rpc',
    'encoded',
    'Get Games Info');

function gamelist($id){
 $query="select eventId, eventName from jos_games where parentId='$id'";
 $rs=mysql_query($query);

 $game=array();
 while($row=mysql_fetch_assoc($rs)){
  $game[]= $row;
 }
 //print_r($game);
 return $game;
}


$HTTPRAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA:"";  
$server->service($HTTP_RAW_POST_DATA);

client.php as below:

require_once("lib/nusoap.php");

$client =  new nusoap_client('http://sonia.ecisoft.com/soap/server.php');


if($err=$client->getError()){
 echo 'Error:'.$err;
}

$id=1;
$return = $client->call('gamelist', array('id'=>$id));

print_r($return);

I can't get return from client.php. I want to list rows of eventId, eventName.
Please help me, thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

唯憾梦倾城 2024-10-20 08:09:14

我认为PHP类型应该是“数组”。更改以下内容应该有效。

$server->wsdl->addComplexType(
'game',
'complexType',
'array',
'all',
'',
array(
 'eventId'=>array('name'=>'eventId','type'=>'xsd:int'),
 'eventName'=>array('name'=>'eventName','type'=>'xsd:string'))
);

函数gamelist的返回值应该是这样的:

return array("game" => $game);

I think the PHP type should be "array". Changing the following, should work.

$server->wsdl->addComplexType(
'game',
'complexType',
'array',
'all',
'',
array(
 'eventId'=>array('name'=>'eventId','type'=>'xsd:int'),
 'eventName'=>array('name'=>'eventName','type'=>'xsd:string'))
);

The return value of function gamelist should be like this:

return array("game" => $game);
惜醉颜 2024-10-20 08:09:14

添加复杂类型的列表Array

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

);

注册功能

        $soap->register(
"YourAPIName",
array( ),
array('return' => 'tns:ListArray'),
API_NAMESPACE,
false, false, false,

Add Complex type of list Array

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

);

Register Function

        $soap->register(
"YourAPIName",
array( ),
array('return' => 'tns:ListArray'),
API_NAMESPACE,
false, false, false,

)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文