2011-01-23 2 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

나는 server.php에서 print_r ($ game)을 시도한다. 그리고 나는 echo "

"을 시도한다. $ client-> request. ""; echo "". $ client-> response. ""; soap 응답 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, 

는)