2011-07-12 66 views
1

我是新來的Web服務。php nusoap return array

我想用PHP編寫的NuSOAP服務器端的通用功能,可以查詢(讀取多個表中的數據),並返回取決於結果的動態數組從MySQL返回...

這裏是服務器代碼...

require_once ('../lib/nusoap.php'); 
$server = new soap_server; 
$server->register('getallbook'); 
function getallbook() 
{ 
$conn = mysql_connect('localhost','root',''); 
mysql_select_db('apexinventry', $conn); 

$sql = "SELECT * FROM users"; 
$q = mysql_query($sql); 
while($r = mysql_fetch_array($q)){ 
    $items[] = array('cd'=>$r['id'],'title'=>$r['userid'],'author'=>$r['password'],'publisher'=>$r['groupid']); 
} 
return $items; 

} 

$server->service($HTTP_RAW_POST_DATA); 

這裏是客戶端代碼......

require_once ('../lib/nusoap.php'); 

$client = new soapclient('http://127.0.0.1/test/server/index.php'); 

$response = $client->call('getallbook'); 

if($client->fault) 
{ 
echo "FAULT: <p>Code: (".$client->faultcode.")</p>"; 
echo "String: ".$client->faultstring; 
} 
else 
{ 
$r = $response; 
$count = count($r); 
?> 
<table border="1"> 
<tr> 
    <th>Code</th> 
    <th>Title</th>   
    <th>Author</th>   
    <th>Publisher</th>   
</tr> 
<?php 
for($i=0;$i<=$count-1;$i++){ 
?> 
<tr> 
    <td><?php echo $r[$i]['cd'];?></td> 
    <td><?php echo $r[$i]['title'];?></td> 
    <td><?php echo $r[$i]['author'];?></td>     
    <td><?php echo $r[$i]['publisher'];?></td>   
</tr> 
<?php 
} 
?> 
</table> 
<?php 
} 

我應該做的更改返回記錄(陣列)?

回答

0

SOAP聲明中定義的返回值是如何定義的?例如,下面是我在我的WSDL:

$server->wsdl->addComplexType('ResultObject', 
'complexType', 
'struct', 
'all', 
'', 
     array(
     'result' => array('name' => 'result', 
      'type' => 'xsd:string'), 
     'addl_info' => array('name' => 'addl_info', 
      'type' => 'xsd:string') 
    ) 
); 

這裏是同一個WSDL我的函數登記:

$server->register('addGroupRequest',    // method name 
array('auth_name' => 'xsd:string', 
    'password' => 'xsd:string', 
    'group_objid' => 'xsd:int',   // input parameters 
    'source_character_objid' => 'xsd:int',   // input parameters 
    'message' => 'xsd:string'),   // input parameters 
array('ResultObject' => 'tns:ResultObject'),  // output parameters 
'urn:Groupwsdl',      // namespace 
'urn:Groupwsdl#addGroupRequest',    // soapaction 
'rpc',        // style 
'encoded',       // use 
'add group request for the character '   // documentation 
); 

而得到陣列,我只是叫$return['addl_info']$return['result']