Foros del Web » Programando para Internet » PHP »

Webservice con php y NuSoap

Estas en el tema de Webservice con php y NuSoap en el foro de PHP en Foros del Web. Estimado amigos , hace un dia que le estoy dando vuelta al tema de crear webservice con php y NuSoap y ponerlo consumir con un ...
  #1 (permalink)  
Antiguo 08/05/2013, 18:04
 
Fecha de Ingreso: noviembre-2006
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Webservice con php y NuSoap

Estimado amigos , hace un dia que le estoy dando vuelta al tema de crear webservice con php y NuSoap y ponerlo consumir con un cliente.php utilizando la misma libreria.... el codigo que pongo a continuacion es una modificacion de un te los temas que se vio [URL="http://www.forosdelweb.com/f18/webservice-nusoap-php-mysql-972099/"]aqui[/URL] pero a pesar que lo copie igual y les asigne mi localhost y puerto de acuerdo a la configuracion que tengo pues al final el resultado me vota una pagina en blanco por parte del cliente.php , pero si muestra y crear el wdsl y puedo ver los metodos dentro de ella... no se que esta pasando que me muestra la pagina en blanco por el cliente.php al parecer creo que son las configuraciones ? .. estoy trabajando con XAMPP ultima version , apache , php5 , mysql y me baje el ultimo NUSoap Tool Kit el ultimo... pero no logro aun darle solucion a la pagian en blanco dejo el codigo..


server.php
Código HTML:
<?php
//require_once('../mysql4/cn.php');
include_once('lib/nusoap.php');
$server = new soap_server;
// $server->configureWSDL('obtenerProductos', 'urn:obtenerProductos');  
 

$ns= "http://localhost:8080/prueba"; 
$server->configureWSDL("obtenerProductos",$ns);
$server->wsdl->schematargetnamespace=$ns;
 
 
$server->wsdl->addComplexType('RenglonProducto','complexType','struct','all','',
               array(
                        'Codigo'            => array('name' => 'Codigo', 'type' => 'xsd:string'),
                        'Nombre'            => array('name' => 'Nombre', 'type' => 'xsd:string'),
                        'Descripcion'       => array('name' => 'Descripcion', 'type' => 'xsd:string' ),
                        'Precio'             => array('name' => 'Precio', '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');  
                      
 
//function obtenerProductos($id=false){
function obtenerProductos($id){

$con = new mysqli("localhost","root","","productos");
$sql = "select idProducto, titulo, descripcion, precio from producto";

//$link = ConectarBase();
//$rs = ConsultarBase($link,$sql);
//$rs = mysql_db_query($con,$sql);

$rs=$con->query($sql);
$n=0;

while($row = $rs->fetch_array(MYSQLI_NUM)) { 

 
    $html[$n]['Codigo']          =$row[0];
    $html[$n]['Nombre']          =$row[1];
    $html[$n]['Descripcion']     =$row[2];
    $html[$n]['Precio']           =$row[3];
    $n++; 
    // $rows[] = $html;
 
}
//echo $html[0]['Codigo']; 
return $html;
 
}

$server->xml_encoding = "utf-8";
$server->soap_defencoding = "utf-8";
$server->register('obtenerProductos',
                  array('Codigo' => 'xsd:string'),
                  array('return'=>'tns:ArrayOfRenglonProducto'),
                  $ns 
                  // 'urn:Servicio',
                  // 'urn:Servicio#obtenerProductos',
                  // 'rpc',
                  // 'literal',
                  // 'Este método devuelve la lista de  productos.'
                  );    
                  
// 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
Cita:
<?php
// incluyo nusoap
include_once('lib/nusoap.php');

$l_oClient = new nusoap_client('http://localhost:8080/prueba/server.php?wsdl', 'wsdl');
//$l_oClient = new nusoap_client('http://localhost:8080/prueba/server.php?);
$err = $l_oClient->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
$l_oProxy = $l_oClient->getProxy();


// llama al webmethod (obtenerProducto)
$parametro = isset($_GET['idProducto'])?$_GET['idProducto']:"1";
$parras = array("sCodigo" => $parametro );
//$parametro ='1';
//$l_stResult = $l_oProxy->obtenerProductos($parametro);
$l_stResult = $l_oProxy->obtenerProductos("1");
//$l_stResult = $l_oClient->call('obtenerProductos',"1");
//$l_stResult = $l_oClient->call('obtenerProductos',$parras);
//print('<pre>');
print_r($l_stResult);
// print('</pre>');

print_r($l_stResult[0]['Codigo']);
echo $l_stResult;
// $array=$html;
var_dump($l_stResult);

$cadena = '';
$cadena .='<?xml version="1.0" encoding="utf-8"?><productos>
<producto>';

if (count($l_stResult)>1)
{
echo count($l_stResult);
echo "sssi hay";
$i=0;

foreach($l_stResult as $row=>$lu1){

echo $row."-".$lu1;
/*
$cadena .=' <codigo>'.$row['Codigo'].'</codigo>
<nombre>'.$row['Nombre'].'</nombre>
<descripcion>'.$row['Descripcion'].'</descripcion>
<precio><![CDATA['.$row['Precio'].']]></precio>';

*/

}

}
else
{

echo"<p>There's nothing in the array.....</p>";
}


$cadena .=' </producto>
</productos>';

//print($cadena);

?>
agradeceria su ayuda.. :)
  #2 (permalink)  
Antiguo 09/05/2013, 08:31
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 9 años, 2 meses
Puntos: 331
Respuesta: Webservice con php y NuSoap

Utiliza display_errors para mostrar los erroes y ver qué pasa.
http://www.google.de/search?client=u...BqTn4QS_mICwAw
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: html, mysql, nusoap, select, sql, 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.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:46.