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,