Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/10/2008, 12:49
Avatar de stone_neo
stone_neo
 
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años, 7 meses
Puntos: 15
Respuesta: Como hacer Web Service con datos complejos (php y mysql)

Mira el Game aqui te pongo un ejemplo de un servicio web con NuSOAP, que jale datos de una base de datos MySQL.

El Server ws.php:

Código PHP:
<?php
include('lib/nusoap.php');
$server = new soap_server;
$server->configureWSDL('obtenerProducto''urn:obtenerProducto');          
$server->wsdl->addComplexType('producto','complexType','struct','all','',
               array(
                        
'idProducto' => array('name' => 'idProducto''type' => 'xsd:string'),
                        
'titulo' => array('name' => 'titulo''type' => 'xsd:string'),
                        
'descripcion' => array('name' => 'descripcion''type' => 'xsd:string' ),
                        
'precio' => array('name' => 'precio''type' => 'xsd:string' ),
                        ));
                        
$server->register('obtenerProducto',
                  array(
'idProducto' => 'xsd:int'),
                  array(
'return'=>'tns:producto'),
                  
'urn:obtenerProducto',
                  
'urn:obtenerProducto#producto',
                  
'rpc',
                  
'encoded',
                  
'Este método devuelve un producto.');                            

function 
obtenerProducto($id){
    
$con = new mysqli("localhost","user","pass","productos");
    
$sql " SELECT idProducto, titulo, descripcion, precio FROM producto where idProducto = $id ";
    
$stmt $con->prepare($sql);
    
$stmt->execute();
    
$stmt->bind_result($col1,$col2,$col3,$col4);
    
$stmt->fetch();
    
$row[0] = $col1;
    
$row[1] = $col2;
    
$row[2] = $col3;
    
$row[3] = $col4;
    return array(
'idProducto' => $row[0],'titulo' => $row[1],'descripcion' => $row[2],'precio' => $row[3]);

}
// 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);    
?>
El Cliente :


Código PHP:
<?php    
require('lib/nusoap.php');
  
$l_oClient = new soapclient('http://localhost/ws/ws.php?wsdl''wsdl');
$l_oProxy  $l_oClient->getProxy();
        
$parametro $_GET['idProducto'];
$l_stResult $l_oProxy->obtenerProducto($parametro);
      

   print 
'<h1>Producto :</h1>'
           
'<br>Id Producto: '  $l_stResult['idProducto']
           . 
'<br>Titulo : '   $l_stResult['titulo']
           . 
'<br>Descripcion ' $l_stResult['descripcion']
           . 
'<br>Precio ' $l_stResult['precio'];
          
?>
Espero que esto te sirva de referencia. Nos vemos.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)

Última edición por jam1138; 05/10/2008 a las 18:18