Foros del Web » Programando para Internet » PHP »

WebService Nusoap php mysql

Estas en el tema de WebService Nusoap php mysql en el foro de PHP en Foros del Web. Hola gente, Estoy empezando a implementar webservices con php+mysql, me he bajado varios ejemplos, mayormente los hay basicos, y he aprendido a hacerlos funcionar con ...
  #1 (permalink)  
Antiguo 26/01/2012, 10:36
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
WebService Nusoap php mysql

Hola gente,
Estoy empezando a implementar webservices con php+mysql,
me he bajado varios ejemplos, mayormente los hay basicos,
y he aprendido a hacerlos funcionar con ayuda de algunos manuales,
ahora estoy modificandolos para que trabaje con datos de mysql,
pero tengo este problema, al consumir el servicio del server, no me muestra los datos de resultados, haber si alguien me da una mano, les dejo el codigo,

Tabla:

--
-- Tabellenstruktur für Tabelle `tab_producto`
--

CREATE TABLE IF NOT EXISTS `tab_producto` (
`ID_PRODUCTO` int(6) NOT NULL AUTO_INCREMENT,
`NOM_PRODUCTO` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
`DES_PRODUCTO` text CHARACTER SET latin1 COLLATE latin1_general_ci,
`STOCK` int(11) DEFAULT NULL,
PRIMARY KEY (`ID_PRODUCTO`)
);

--
-- Daten für Tabelle `tab_producto`
--

INSERT INTO `tab_producto` (`ID_PRODUCTO`, `NOM_PRODUCTO`, `DES_PRODUCTO`, `STOCK`) VALUES
(76, 'CLORETS', '', 13),
(77, 'TRIDENT ', '', 15),
(78, 'CHICLE ADAMS - GRANDE', '', 25);


server.php

Código PHP:
<?php
include('../lib/nusoap.php');
$server = new soap_server;
$server->configureWSDL('obtenerProductos''urn:obtenerProductos');          
$server->wsdl->addComplexType('RenglonProducto','complexType','struct','all','',
               array(
                        
'Id_Producto'         => array('name' => 'Id_Producto''type' => 'xsd:string'),
                        
'Codigo'             => array('name' => 'Codigo''type' => 'xsd:string'),
                        
'Descripcion'         => array('name' => 'Descripcion''type' => 'xsd:string' ),
                        
'PrecioBaseVenta'     => array('name' => 'PrecioBaseVenta''type' => 'xsd:string' ),
                        ));
$server->wsdl->addComplexType('ArrayOfRenglonProducto','complexType','array','','SOAP-ENC:Array',
array(),
array(        
            array(
'ref' => 'SOAP-ENC:arrayType',
                  
'wsdl:arrayType' => 'tns:RenglonProducto[]'                              
                  
)                                       
    ),
'tns:RenglonProducto');
$server->xml_encoding "utf-8";
$server->soap_defencoding "utf-8";
$server->register('obtenerProductos',
                  array(
'Id_Producto' => 'xsd:int'),
                  array(
'return'=>'tns:ArrayOfRenglonProducto'),
                  
'urn:Servicio',
                  
'urn:Servicio#obtenerProductos',
                  
'rpc',
                  
'literal',
                  
'Este método devuelve la lista de  productos.');                            

function 
obtenerProductos($id=false){
$i=0;         
     
$con = new mysqli("localhost","root","","inversio_tienda");
    
$sql " SELECT ID_PRODUCTO, NOM_PRODUCTO, DES_PRODUCTO, STOCK FROM tab_producto ";
    
$stmt $con->prepare($sql);
    
$stmt->execute();
    
$stmt->bind_result($col1,$col2,$col3,$col4);
    
// $stmt->fetch();

    
while ($stmt->fetch()) {
       
// printf ("%s (%s)\n", $row[0], $row[1]);
        
$row[0] = 'A';
        
$row[1] = 'B';
        
$row[2] = 'C';
        
$row[3] = 'D';
        
$rows[$i]=$row;
             
// echo $rows[0];
        
$i=$i+1;
    }

    return 
$rows//array('Id_Producto' => $row[0],'Codigo' => $row[1],'Descripcion' => $row[2],'PrecioBaseVenta' => $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);    
?>
cliente.php

Código PHP:
<?php    
// incluyo nusoap 
require('../lib/nusoap.php');
  
$l_oClient = new nusoap_client('http://localhost/ws/mysql3/server.php?wsdl''wsdl');
$l_oProxy  $l_oClient->getProxy();
        
// llama al webmethod (obtenerProducto)
$parametro = isset($_GET['idProducto'])?$_GET['idProducto']:'';
$l_stResult $l_oProxy->obtenerProductos($parametro);
           
print(
'<pre>');
print_r($l_stResult); 
print(
'</pre>');
// ?>

el resultado en pantalla es este,

Array
(
[item] => Array
(
[0] => Array
(
[Id_Producto] =>
[Codigo] =>
[Descripcion] =>
[PrecioBaseVenta] =>
)

[1] => Array
(
[Id_Producto] =>
[Codigo] =>
[Descripcion] =>
[PrecioBaseVenta] =>
)

[2] => Array
(
[Id_Producto] =>
[Codigo] =>
[Descripcion] =>
[PrecioBaseVenta] =>
)
)
)

Gracias de antemano,

Saludos,
  #2 (permalink)  
Antiguo 27/01/2012, 16:38
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: WebService Nusoap php mysql

gente, ya resolvi el problema, logre imprimir los resultados en el cliente.php, les dejo el codigo para los q se topan con este problema,

server.php
Código PHP:
Ver original
  1. <?php
  2. require_once('../mysql4/cn.php');
  3. include('../lib/nusoap.php');
  4. $server = new soap_server;
  5. // $server->configureWSDL('obtenerProductos', 'urn:obtenerProductos');  
  6.  
  7. $ns     = "http://localhost/ws/mysql3/";
  8. $server->configureWSDL("obtenerProductos",$ns);
  9. $server->wsdl->schematargetnamespace=$ns;
  10.  
  11.  
  12. $server->wsdl->addComplexType('RenglonProducto','complexType','struct','all','',
  13.                array(
  14.                         'Codigo'            => array('name' => 'Codigo', 'type' => 'xsd:string'),
  15.                         'Nombre'            => array('name' => 'Nombre', 'type' => 'xsd:string'),
  16.                         'Descripcion'       => array('name' => 'Descripcion', 'type' => 'xsd:string' ),
  17.                         'Stock'             => array('name' => 'Stock', 'type' => 'xsd:string' ),
  18.                         ));
  19.                        
  20. $server->wsdl->addComplexType('ArrayOfRenglonProducto','complexType','array','','SOAP-ENC:Array',
  21.                                 array(),
  22.                                 array(        
  23.                                             array('ref' => 'SOAP-ENC:arrayType',
  24.                                                   'wsdl:arrayType' => 'tns:RenglonProducto[]'                              
  25.                                                   )                                      
  26.                                     ),
  27.                                 'tns:RenglonProducto');                        
  28.  
  29. function obtenerProductos($id=false){
  30.  
  31. $sql = "SELECT ID_PRODUCTO, NOM_PRODUCTO, DES_PRODUCTO, STOCK FROM tab_producto order by ID_PRODUCTO";
  32. $link = ConectarBase();
  33. $rs = ConsultarBase($link,$sql);
  34. $n=0;
  35. while ($row = mysql_fetch_array($rs)) {
  36.  
  37.     $html[$n]['Codigo']          =$row[0];
  38.     $html[$n]['Nombre']          =$row[1];
  39.     $html[$n]['Descripcion']     =$row[2];
  40.     $html[$n]['Stock']           =$row[3];
  41.     $n++;
  42.     // $rows[] = $html;
  43. }
  44.  
  45. return $html;
  46.  
  47. }
  48.  
  49. $server->xml_encoding = "utf-8";
  50. $server->soap_defencoding = "utf-8";
  51. $server->register('obtenerProductos',
  52.                   array('Codigo' => 'xsd:int'),
  53.                   array('return'=>'tns:ArrayOfRenglonProducto'),
  54.                   $ns
  55.                   // 'urn:Servicio',
  56.                   // 'urn:Servicio#obtenerProductos',
  57.                   // 'rpc',
  58.                   // 'literal',
  59.                   // 'Este método devuelve la lista de  productos.'
  60.                   );    
  61.                  
  62. // Use the request to (try to) invoke the service
  63. $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
  64. $server->service($HTTP_RAW_POST_DATA);    
  65. ?>

cliente.php
Código PHP:
Ver original
  1. <?php    
  2. // incluyo nusoap
  3. require('../lib/nusoap.php');
  4.  
  5. $l_oClient = new nusoap_client('http://localhost/ws/mysql3/server.php?wsdl', 'wsdl');
  6. $l_oProxy  = $l_oClient->getProxy();
  7.        
  8. // llama al webmethod (obtenerProducto)
  9. $parametro = isset($_GET['idProducto'])?$_GET['idProducto']:'';
  10. $l_stResult = $l_oProxy->obtenerProductos($parametro);  
  11. // print('<pre>');
  12. // print_r($l_stResult);
  13. // print('</pre>');
  14.  
  15. $cadena = '';
  16. $cadena .='<?xml version="1.0" encoding="utf-8"?><productos>
  17.         <producto>';
  18. foreach($l_stResult as $row){
  19. $cadena .=' <codigo>'.$row['Codigo'].'</codigo>
  20.             <nombre>'.$row['Nombre'].'</nombre>
  21.             <descripcion>'.$row['Descripcion'].'</descripcion>
  22.             <stock><![CDATA['.$row['Stock'].']]></stock>';
  23. }  
  24. $cadena .=' </producto>
  25.             </productos>';
  26.            
  27. print($cadena);
  28.  
  29.  ?>

Saludos,
  #3 (permalink)  
Antiguo 27/01/2012, 16:56
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: WebService Nusoap php mysql

Gente de nuevo por aqui,
no tengo muy claro la forma de creacion de los mensajes SOAP o xml,
que van a ser leidas por otras aplicaciones,

Les comento que he empezado desde 0 este tema,
hasta la semana pasada no tenia ni idea de como hacerlos webservices,
pero con ayuda de algunos tutoriales y ejemplos practicos en la web,
he logrado llegar hasta aqui,

Necesito, alguna idea nueva, comentario, informacion extra,
que ayuden a concretar bien la idea del funcionamiento y los archivos que componen los webservices,

hasta el momento tengo:

lib // carpeta de la libreria UNSOAP
servidor.php // archivo q crea el servicio
cleinte.php // archivo cliente q lee el servicio
cn.php // archivo con parametros de connecion a mysql


he hecho esto en el cliente para generar el xml, nose si estara bien o mal,

Código PHP:
<?php    
// incluyo nusoap 
require('../lib/nusoap.php');
  
$l_oClient = new nusoap_client('http://localhost/ws/mysql3/server.php?wsdl''wsdl');
$l_oProxy  $l_oClient->getProxy();
        
// llama al webmethod (obtenerProducto)
$parametro = isset($_GET['idProducto'])?$_GET['idProducto']:'';
$l_stResult $l_oProxy->obtenerProductos($parametro);  


$cadena ''
$cadena .='<?xml version="1.0" encoding="utf-8"?><productos>
        <producto>'
;
foreach(
$l_stResult as $row){
$cadena .='    <codigo>'.$row['Codigo'].'</codigo>
            <nombre>'
.$row['Nombre'].'</nombre>
            <descripcion>'
.$row['Descripcion'].'</descripcion>
            <stock><![CDATA['
.$row['Stock'].']]></stock>'
}    
$cadena .='    </producto>
            </productos>'

            
print(
$cadena);
 
 
?>
de antemano, les agradezco x su participacion.


Saludos,
  #4 (permalink)  
Antiguo 09/11/2012, 12:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: WebService Nusoap php mysql

Hola a todos bueno no se como abrir un nuevo tema, y necesito algo urgente
estoy desarrollando un web services en asp.net(ya esta listo) y quiero consumir ese servicio desde php(tbm esta listo) el problema es que me muestra la data de esta forma :
Array ( [mostrarData2Result] => ["8252","8271","8272","8273","8274"] )

quiero poder capturar cada valor independientemente, en verdad es urgente, saludos

Etiquetas: mysql, nusoap, webservice
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 02:46.