ya lo arregl:/
tenia un problema en el cliente, hice uno sencillo y paso sin problemas.
para aquellos que deseen devolver un arreglo a través de soap, les dejo el código (para mssql, solo deben reemplazar el tipo de conexión y las funciones de query)
servidor.php
Código PHP:
<?php
require_once('lib/nusoap.php');
$server = new soap_server;
$server->register(
'GetTopPK' // method name
);
function GetTopPK() {
connectdb("BD", "SERVER", "USUARIO", "PASSWORD");
$sql = 'SELECT TOP 10 char_name, PK FROM user_data WHERE builder = 0 ORDER BY PK DESC ;';
$result = mssql_query($sql);
$numrows = mssql_num_rows($result);
if (!$result) {
return new soapfault('SOAP-ENV: Server', '', 'Se ha producido un error en la consulta. Por favor, inténtelo más tarde');
}
if ($numrows < 1) {
return new soapfault('SOAP-ENV: Server', '', 'No se han encontrado provincias con dicho identificador');
}
$i = 0;
while ($row = mssql_fetch_assoc($result)) {
$retval[$i] = array('USER'=>$row['char_name'], 'PK'=>$row['PK']);
$i++;
}
return $retval;
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
function connectdb($db, $dbaddress, $dbuser, $dbpass) {
$dbconnect = mssql_connect($dbaddress, $dbuser, $dbpass);
if($dbconnect === false){
return false;
}else{
mssql_select_db ($db, $dbconnect) or die (mysql_error());
}
}
?>
cliente.php
Código PHP:
<?php
require_once('lib/nusoap.php');
$client = new soapclient('http://localhost/service/server.php');
$err = $client->getError();
if ($err) {
echo '<p><b>Constructor error: ' . $err . '</b></p>';
}
$names = array('Scott', 'Albert', 'Robert', 'Phyllis');
$result = $client->call(
'GetTopPK', // method name
array() // input parameters
);
if ($client->fault) {
echo '<p><b>Fault: ';
print_r($result);
echo '</b></p>';
} else {
$err = $client->getError();
if ($err) {
echo '<p><b>Error: ' . $err . '</b></p>';
} else {
print_r($result);
}
}
?>
saludos a todos