Problema grave con web services- necesito ayuda urgente

edited marzo 2009 in PHP
Buen día,
Tengo hecho un web services en php, el codigo es el siguiente:

<?php

require_once('lib/nusoap.php');
$server = new soap_server;
$server->configureWSDL('obtenerProducto', 'http://localhost/');
$server->wsdl->addComplexType('producto','complexType','struct','all','',
array(

'codigo_pro' =>array('name'=> 'codigo_pro', 'type'=> 'xsd:int'),
'nombre_pro' =>array('name'=> 'nombre_pro', 'type'=> 'xsd:string'),
'precio_pro' =>array('name'=> 'precio_pro', 'type'=> 'xsd:string'),
'descri_pro' =>array('name'=> 'descri_pro', 'type'=> 'xsd:string')
));
$server->register('obtenerProducto',
array('codigo_pro' => 'xsd:int'),
array('return'=>'tns:producto'),
'localhost',
'http://localhost/SistemaB/WebServices/ws_pr.php/obtenerProducto',
'rpc',
'encoded',
'Este metodo devuelve un producto.');


function obtenerProducto($id){
$arr = Array();

$con = new mysqli("localhost","root","sandielo","sistemaa");
if ($id == null)
$sql = " SELECT codigo_pro, nombre_pro, precio_pro, descri_pro FROM producto ";
else
$sql = " SELECT codigo_pro, nombre_pro, precio_pro, descri_pro FROM producto where codigo_pro = $id";
$stmt = $con->prepare($sql);
$stmt->execute();
$stmt->bind_result($col1,$col2,$col3,$col4);
$num =$stmt->num_rows();
//echo $num;
while($stmt->fetch()){
$i =0;
$row[0] = $col1;
$row[1] = $col2;
$row[2] = $col3;
$row[3] = $col4;
}
return array(
'codigo_pro' => $row[0],'nombre_pro' => $row[1],
'precio_pro' => $row[2],'descri_pro' => $row[3]);



}


?>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);

?>

Como se dan cuenta, el servicio lo que hace es consultar una tabla en una base de datos, si no se le envia parámetro hace la consulta a todos los registros. Lo que necesito es: Al consumir el servicio este me muestre todos los registros de la tabla, pero en el cliente solo me muestra el ultimo registro, si coloco el return dentro del while solo me muestra el primer registro. que puedo hacer para poder ver todos los registros?

Acá adjunto el código del cliente (si sirve de algo):
<?php
/**
* Codigo para consumir un servicio web (Web Service) por medio de NuSoap.
* La distribucion del codigo es totalmente gratuita y no tiene ningun tipo de restriccion.
* Se agradece que mantengan la fuente del mismo.
*/

// Inclusion de la libreria nusoap (la que contendra toda la conexión con el servidor //
$dirWebService = "http://localhost/SistemaB/WebServices/ws_pr.php?wsdl";
$wsdl = "wsdl";
$oClient = new nusoap_client($dirWebService, $wsdl);
$oProxy = $oClient->getProxy();
$parametro = null;
$resultado = $oProxy->ObtenerProducto($parametro);
Flash::success("Productos Sistema B");
echo "<br>";


Flash::success( $resultado."\t".
$resultado."\t".
$resultado."\t".
$resultado);





?>
Necesito ayuda urgente por favor.
Gracias.

Comentarios

  • Una cosa es necesario que lo hagas en SOAP? porque si no es asi existe forma mas sencilla de ofrecer web service mediante REST y con kumbiaphp es mas fácil aun...
  • edited 12:04
    Hola,
    Uyyyyyyy explicame eso por favor. Te agradecería.
  • Ya tu Web service esta implementado? osea debe ser en SOAP si porque si?

    Deberias pasarte por el IRC de kumbiaphp framework
  • edited 12:04
    Ben día.

    No esta implementado, lo que debo hacer es una demostración de interoperabilidad y de paso aprender. No importa el protocolo, solo que ese servicio que muestro fue uno que hice en una aplicación que escribí hace algun tiempo cuando empecé a dar mis primeros pasos con PHP (una aplicacion spaguethi) y ahora quiero consumirlo desde un aplicación hecha bajo Kumbia. Tambien quisiera poder generar un reporte en pdf con esos datos (hacer uso de esa información). Ando un poco preocupado porque me acosa el tiempo. Intenté usar restful web services pero es algo nuevo y no entiendo muy bien. No se como llamar el archivo wsdl porque netbeans solo genera un archivo wsda.

    Gracias
  • Una vez mas pasa por el IRC y alli te ayudamos entiendo la prisa, ya hemos ayudado a personas a crear web service con REST es mucho mas fácil y desde kumbiaphp mas aun... <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->

    Supe que hoy pasaste pero fue muy temprano...
  • edited 12:04
    Hola,
    Lo que pasa es que desde el trabajo no me puedo conectar y me toca en mi casa despues de que salgo. A que hora te puedo conseguir por ese 1/2?
    yo me conecto entre las 8 p.m y 11 p.m hora colombiana.
    Gracias.
Sign In or Register to comment.