Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2012, 11:38
neon2004
 
Fecha de Ingreso: agosto-2007
Mensajes: 19
Antigüedad: 16 años, 8 meses
Puntos: 0
problema con servicio web

Hola. Estoy intentando hacer un servicio web que haga una consulta a una bd y me devuelva los datos. El caso es que no me devuelve nada. Aqui os dejo el codigo.

Parte del servidor:

<?php
require_once('../../Tools/nusoap.php');
// Incorporar la biblioteca nusoap al script, incluyendo nusoap.php (ver imagen de estructura de archivos)

// Modificar la siguiente linea con la direccion en la cual se aloja este script
$miURL = 'http://www.cvroncal.es';
$server = new soap_server();
$server->configureWSDL('miwebservice', $miURL);
$server->wsdl->schemaTargetNamespace=$miURL;

$bd_host = "xxx";
$bd_usuario = "xxx";
$bd_password = "xxx";
$bd_base = "xxx";


$server->wsdl->addComplexType(
'Noticia',
'complexType',
'struct',
'all',
'',
array(
'titulo' => array('name' => 'titulo', 'type' => 'xsd:string'),
'cuerpo' => array('name' => 'cuerpo', 'type' => 'xsd:string')
)
);

// Array de Sede
$server->wsdl->addComplexType(
'Noticias',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Noticia[]')),'tns:Noticia');


/*
* Ejemplo 1: getRespuesta es una funcion sencilla que recibe un parametro y retorna el mismo
* con un string anexado
*/
$server->register('Bienvenido', // Nombre de la funcion
array(), // Parametros de entrada
array('return' => 'tns:Noticias'), // Parametros de salida
$miURL);
function Bienvenido(){
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
$Resultado = mysql_query("SELECT titulo,descripcion FROM Noticias ",$con);

while($MostrarFila = mysql_fetch_array($Resultado)){
$Noticias[]=array(
'titulo'=>$MostrarFila['titulo'],
'cuerpo'=>$MostrarFila['descripcion']);
}
mysql_close($con);
return $Noticias;
}

if ( !isset( $HTTP_RAW_POST_DATA ) )
$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );

$server->service($HTTP_RAW_POST_DATA);
?>


parte cliente:

<?php
// Incluimos la biblioteca de NuSOAP (la misma que hemos incluido en el servidor, ver la ruta que le especificamos)
require_once('../../Tools/nusoap.php');
// Crear un cliente apuntando al script del servidor (Creado con WSDL) -
// Las proximas 3 lineas son de configuracion, y debemos asignarlas a nuestros parametros
$serverURL = 'http://www.cvroncal.es';
$serverScript = 'EjemploWebService.php';
$metodoALlamar = 'Bienvenido';

// Crear un cliente de NuSOAP para el WebService
$cliente = new nusoap_client("$serverURL/$serverScript?wsdl", 'wsdl');
$cliente->response_timeout=60;

// 1. Llamar a la funcion getRespuesta del servidor
$respuesta = $cliente->call(
"$metodoALlamar", // Funcion a llamar
array() );

// Verificacion que los parametros estan ok, y si lo estan. mostrar rta.
if ($cliente->fault) {
echo "FALLO: <p>Codigo: (".$cliente->faultCode.")</p>";
echo "Mensaje: " .$cliente->faultstring;

} else {
$cantidad=count($result);
echo $cantidad;
?>
<table border="1">
<tr>
<th>Titulo</th>
<th>Descripcion</th>
</tr>
<?php
for($i=0;i<$cantidad;$i++){
?>
<tr>
<td><?php echo $result[$i]['titulo']?></td>
<td><?php echo $result[$i]['descripcion']?></td>
</tr>
<?php
}
?>
</table>
<?php
}

?>

He de decir que es la primera vez que intento algo asi por lo que todo es nuevo para mi y en realidad no me entero del todo, el codigo lo he ido viendo en diferentes post. He probado este servicio web devolviendo un string en vez de hacer una consulta a la bd y devolver un tipo complejo y si que funcionaba. Cuando lo he cambiado ya no devuelve nada como vereis ago un echo $cantidad y esto muestra 0 y no se el por que. Gracias.