Foros del Web » Programando para Internet » PHP »

Como hacer Web Service con datos complejos (php y mysql)

Estas en el tema de Como hacer Web Service con datos complejos (php y mysql) en el foro de PHP en Foros del Web. Hola, tengo que desarrollar una aplicación en php, en la que tengo que crear web services, pero realmente no sabia nada de este tema, así ...
  #1 (permalink)  
Antiguo 03/10/2008, 10:40
 
Fecha de Ingreso: enero-2008
Mensajes: 40
Antigüedad: 16 años, 3 meses
Puntos: 0
Como hacer Web Service con datos complejos (php y mysql)

Hola, tengo que desarrollar una aplicación en php, en la que tengo que crear web services, pero realmente no sabia nada de este tema, así que investigue un poco y pude crear un web service (con nusoap) y consumirlo, pero solo manejo datos simples. Y yo necesito manejar datos complejos pero no entiendo como utilizarlos.

Lo que quiero hacer es crear un web service (utilizando Nusoap) con un método el cual se conecte a la base de datos mysql y haga una consulta. Y los registros que me arroje la consulta los quiero regresar para que los pueda utilizar en el cliente del web service. Y si es posible expliquen como lo consumiría en el cliente.


Ojalá me puedan ayudar con un ejemplo para que le entienda, porque realmente no he podido encontrar uno.

Salu2.
  #2 (permalink)  
Antiguo 05/10/2008, 12:49
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
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
  #3 (permalink)  
Antiguo 21/10/2008, 09:49
Avatar de solinem  
Fecha de Ingreso: diciembre-2007
Mensajes: 61
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Como hacer Web Service con datos complejos (php y mysql)

Que tal:
He optado por usar la extensión nativa SOAP de PHP, pero realmente no tengo mucha idea de cómo hacer algo similar a lo que exponen aquí.
He leído varios artículos pero aun así no entiendo como ensamblarlo todo: desde el procesamiento de mi consulta, hasta la publicación del servicio web con el contenido de esta.
para empezar, ¿cómo podríamos implementar este mismo ejemplo, pero en vez de usar NuSOAP, hacerlo con SOAP nativo de PHP?

Salu2:
Agradezco de antemano su ayuda.
  #4 (permalink)  
Antiguo 22/10/2008, 16:50
Avatar de solinem  
Fecha de Ingreso: diciembre-2007
Mensajes: 61
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Como hacer Web Service con datos complejos (php y mysql)

¿Cómo sería el archivo WSDL, y dónde tendría que ubicarlo?
  #5 (permalink)  
Antiguo 23/10/2008, 08:06
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Como hacer Web Service con datos complejos (php y mysql)

Mira solinem si usas la libreria NuSOAP, esta te crea el archivo WSDL y teniendo en cuenta el ejemplo que use arriba, la manera de llamar al archivo WSDL seria de la siguiente manera:

http://tu_host/carpeta_donde_esta_tu...ce/ws.php?wsdl
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #6 (permalink)  
Antiguo 28/11/2008, 23:31
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Como hacer Web Service con datos complejos (php y mysql)

Si quieren un ejemplo sencillo sobre Web Services PHP con datos complejos puedes revisar este enlace:

http://www.codesol.info/blog/?p=136
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:44.