Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2011, 21:09
Avatar de Modern_Crusades
Modern_Crusades
 
Fecha de Ingreso: junio-2005
Mensajes: 620
Antigüedad: 18 años, 9 meses
Puntos: 1
Pregunta WebService Nusoap PHP y C#

Que tal soy nuevo en PHP, normalmente realizo servicios web en Java o net.
ahora me toca hacer un servicio web com php. encontre la libreria nusoap y baje la ultima que esta en el source forge el codigo de mi servicio es el siguiente, cuando no regresaba yo una lista de producto y solo regreso un producto al agregar la referencia al servicio en el visual studio 2010 todo funciona perfecto, tal y como otros web services que he usado. pero al querer regresar una lista de objetos osease un array de arrays no lo ve no me genera bien la referencia en otras palabras no recupera bien la informacion dle servicio.

cualquier ayuda es apreciada.

PHP- con Notepad++ y xdebug.
C#- Visual Studio 2010 .net 4.0
servidor de prueba WampServer con php 5.2.6
myql 5.0.1
Nusoap 0.95

Production Server
XAMP PHP 5.2.11
mysql 5.1

en ambos me sucede el mismo error.
Código:
<?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){
     $con = new mysqli("localhost","admin","admin","mybase");
    $sql = " SELECT Id_Producto, Codigo, Descripcion, PrecioBaseVenta FROM producto";
    $stmt = $con->prepare($sql);
    $stmt->execute();
    $stmt->bind_result($col1,$col2,$col3,$col4);
    //$stmt->fetch();
$i=0;
	while ($stmt->fetch()) {
       // printf ("%s (%s)\n", $row[0], $row[1]);
		$row[0] = $col1;
		$row[1] = $col2;
		$row[2] = $col3;
		$row[3] = $col4;
		$rows[$i]=$row;
		    echo $rows[1];

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