Tema: nusoap
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/02/2009, 11:12
Avatar de maralbust
maralbust
 
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: nusoap

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
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..