Buenas.
Soy novato en la programación de webservices, de modo que ayer cojí un artículo en el que venía el código para realizar uno sencillo.
Para cojer un poco de soltura me lo copié a ver si funcionaba, hice las pruebas desde mi servidor y al ejecutar el cliente obtenia el resultado esperado.
De este modo mi siguiente prueba fue tener en un servidor el cliente y en otro el servicio web para probarlo en un entorno más realista, sin embargo así al ejecutar el cliente no parece hacer nada.
Os dejo el codigo a ver si alguien es capaz de explicarme porqué no me funciona si no tengo ambos archivos en el mismo server?
-----------------------------
1. calculadora.php
<?php
// Clase que implementa los servicios
class Calculadora
{
// Metodo a utilizar como servicio
public function sumar($x, $y)
{
return $x + $y;
}
}
?>
---------------------------
2. servicio.php
<?php
// Incluir la Clase
require_once('Calculadora.php');
// Crear servidor de Soap
$server = new SoapServer(
null, // No utilizar WSDL
array('uri' => 'urn:webservices')
);
// Asignar la Clase
$server->setClass('Calculadora');
// Atender los llamados al webservice
$server->handle();
?>
----------------------------------------------------
3.cliente.php
<?php
// Crear el cliente suministrado la ruta del servicio
// Utilizar el uri
$client = new SoapClient(null,
array(
'location' => 'url_De_mi_pagina/servicio.php',
'uri' => 'urn:webservices',
));
// Llamar el metodo como si fuera del cliente
echo $client->sumar(3,12);
?>
---------------------------------------------------
Bajo estas condiciones si ejecuto cliente.php en la misma máquina y carpeta donde están los otros 2 archivos me aparece la suma (en este caso 15), sin embargo al ponerlos separados la página se carga en blanco como si en ningún momento hiciese la llamada.
sigo pensando sobre el tema, y pienso que quizas pueda ser un problema de puertos, es decir si el puerto por el que envia y recibe en alguno de los dos server esta cerrado es inviable que se haga la conexión, el problema para comprobar esto es que por el codigo simplemente no puedo saber cual es el puerto o los puertos que esta usando en cada server. ¿hay alguna forma de depurar esto?
En mi servidor están todos los puertos abiertos, puede ser que por eso ahi si que funcione y que en el otro servidor justo el puerto necesario este cerrado y me este jorobando el asunto.