2011-01-23 3 views
2

Я пишу server.php, как показано ниже:Как вернуть массив nusoap?

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. Пожалуйста, помогите мне, спасибо.

+0

Вы проверили, возвращает ли сервер правильный ответ, если вы просто запросить URL в браузере (или даже инструмент, как SoapUI)? Это скажет вам, не виноват ли ваш клиент или сервер. – Spudley

+0

Я пытаюсь print_r ($ game) в server.php, это правильно. И я попробую echo "

". $ Client-> request. ""; echo "". $ Client-> response. ""; Матрица print_r от мыла. – Sonia

ответ

5

Я думаю, что тип 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); 
4

Добавить сложный тип списка массива

$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, 

)