Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2011, 12:04
Avatar de PICOROFG
PICOROFG
 
Fecha de Ingreso: febrero-2008
Ubicación: Quito, Ecuador, Ecuador
Mensajes: 120
Antigüedad: 16 años, 10 meses
Puntos: 0
Problema al intentar consumir muchos registros de una consulta en Web Services

Buenos días Amigos del Foro,

Tengo una inquietud que me gustaría me puedan ayudar a solventar. Tengo un Servicio Web basado en Nusoap en el cual funciona bien al momento de realizar una consulta a una base de datos en Oracle para que me devuelva pocos registros, el problema es cuando el número de registros aumenta a n. Pueden ayudarme con información si es motivos de configuración o algún problema con el Servicio Web??

Muchas Gracias por su ayuda.

Dejo el código del Cliente.

Código PHP:

<?php

require_once('nusoap.php');
$wsdl="http://localhost/ws/SERVER.php?wsdl"//url del webservice que invocaremos
$client=new nusoap_client($wsdl,'wsdl'); //instanciando un nuevo objeto cliente para consumir el webservice  


$estudiante $client->call('ListarEstudiante'); //llamando al metodo y recuperando el array de productos en una variable

//¿ocurrio error al llamar al web service? 
if ($client->fault) { // si
      
echo 'No se pudo completar la operación'
      die(); 
}else{ 
// no
    
$error $client->getError(); 
    if (
$error) { // Hubo algun error 
        
echo 'Error:' $error
    } 

echo 
"<div id='apDiv1' align='left'>

<table border='1'><tr>"
;
    echo
"<td>Id Estudiante</td>
            <td>C&eacute;dula</td>
            <td>Nombre</td>
            <td>Apellido</td>
            <td>Universidad</td>            
            <td>Departamento</td>
            <td>Cod Pais</td>
            <td>Email</td>
            <td>Direccion</td>
            <td>Telefono</td>
            <td>Prefijo</td>
            
    
    </tr>"
;
if(
is_array($estudiante)){ //si hay valores en el array


    
for($i=0;$i<count($estudiante);$i++){    
        
        
$id_estudiante=$estudiante[$i]['Id_Estudiante'];
        
$cedula=$estudiante[$i]['Cedula'];
        
$nombre=$estudiante[$i]['Nombre'];
        
$apellido=$estudiante[$i]['Apellido'];
        
$universidad=$estudiante[$i]['Universidad'];
        
$departamento=$estudiante[$i]['Departamento'];
        
$codpais=$estudiante[$i]['CodPais'];
        
$email=$estudiante[$i]['Email'];
        
$direccion=$estudiante[$i]['Direccion'];
        
$telefono=$estudiante[$i]['Telefono'];
        
$prefijo$estudiante[$i]['Prefijo'];
            
        echo
"<tr >";    
        echo 
'<td>'.$id_estudiante.
        
'</td><td>'.$cedula.
        
'</td><td>'.$nombre.
        
'</td><td>'.$apellido.
        
'</td><td>'.$universidad.
        
'</td><td>'.$departamento.
        
'</td><td>'.$codpais.
        
'</td><td>'.$email.
        
'</td><td>'.$direccion.
        
'</td><td>'.$telefono.
        
'</td><td>'.$prefijo.
        
'</td></tr> ';        
        
        }
}else{
    echo 
'No hay estudiantes';
}

echo
"</table></div>";
?>
y el Servidor.

Código PHP:
require_once('../nusoap/lib/nusoap.php');

$server = new soap_server;

$ns="http://localhost/ws"// espacio de nombres; Sitio donde estara alojado el web service
$server->configurewsdl('WEB SERVICE'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;


$server->wsdl->addComplexType(
    
'ArregloEstudiante',             // Nombre
    
'complexType',                     // Tipo de Clase
    
'array',                         // Tipo de PHP
    
'',                             // definición del tipo secuencia(all|sequence|choice)
    
'SOAP-ENC:Array',                 // Restricted Base
    
array(),
    array(
        array(
'ref' => 'SOAP-ENC:arrayType''wsdl:arrayType' => 'tns:Estudiante[]'// Atributos
    
),
    
'tns:Estudiante'
);

$server->wsdl->addComplexType('Estudiante''complexType''struct''all''',
    array(
        
'Id_Estudiante'=> array('name' => 'Id_Estudiante','type' => 'xsd:string'),
        
'Cedula'    => array('name' => 'Cedula',    'type' => 'xsd:string'),
        
'Nombre'    => array('name' => 'Nombre',    'type' => 'xsd:string'),
        
'Apellido'=> array('name' => 'Apellido','type' => 'xsd:string'),
        
'Universidad'    => array('name' => 'Universidad',    'type' => 'xsd:string'),
        
'Departamento'    => array('name' => 'Departamento',    'type' => 'xsd:string'),
        
'CodPais'=> array('name' => 'CodPais','type' => 'xsd:string'),
        
'Email'    => array('name' => 'Email',    'type' => 'xsd:string'),
        
'Direccion'    => array('name' => 'Direccion',    'type' => 'xsd:string'),
        
'Telefono'=> array('name' => 'Telefono','type' => 'xsd:string'),
        
'Prefijo'=> array('name' => 'Prefijo','type' => 'xsd:string'),
        

        
    )
);

/*METODO DEL WEB SERVICE*/
function ListarEstudiante($estado){
//aqui hago la consulta a la base
            
$i 0;
            
$j=1;
while (
$j <= 5) {
  
  
  
                
$toc[$i]['Id_Estudiante'] = $j;
                
$toc[$i]['Cedula'] = $j;
                
$toc[$i]['Nombre'] = $j;
                
$toc[$i]['Apellido'] = $j;
                
$toc[$i]['Universidad'] = $j;
                
$toc[$i]['Departamento'] = $j;
                
$toc[$i]['CodPais'] = $j;
                
$toc[$i]['Email'] = $j;
                
$toc[$i]['Direccion'] = $j;
                
$toc[$i]['Telefono'] = $j;
                
$toc[$i]['Prefijo'] = $j;

$i++;    
$j++;            
}
            return 
$toc;
    
}
    

/************ REGISTRANDO EL METODO **************/
$server->register(
    
'ListarEstudiante',                           // Nombre del Metodo
    
array('estado' => 'xsd:string' ),           // Parametros de Entrada
    
array('return' => 'tns:ArregloEstudiante')   //Datos de Salida
);


/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA implode("\r\n"file('php://input'));
$server->service($input);
exit;