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
Uyyyyyyy explicame eso por favor. Te agradecería.
Deberias pasarte por el IRC de kumbiaphp framework
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
Supe que hoy pasaste pero fue muy temprano...
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.