Cita:
Iniciado por solinem
Si ubico los 3 archivos en el mismo servidor y directorio todo funciona bien, pero si el cliente lo ubico en otro servidor, aparece un mensaje de error:
¿Exactamente el mismo código en el cliente?, osea, ¿haciendo referencia a su propia IP?
![Pensando](http://static.forosdelweb.com/fdwtheme/images/smilies/scratchchin.gif)
...
Primero, dices que si intentas abrir directamente el archivo wsdl desde el navegador se intenta descargar, eso no es correcto. Mira en la configuración de apache, debería tener como
DefaultType el valor
text/plain.
Segundo, en tu WSDL como punto final prueba colocar la URL con la IP de tu servicio, esto es, cambiar esto:
Código XML:
Ver original<soap:address location='http://localhost/ws/soap-server.php'/>
por esto:
Código XML:
Ver original<soap:address location='http://10.132.44.205/ws/soap-server.php'/>
... o donde se encuentre el archivo PHP. Ahí hay una inconsistencia, en el cliente dices el WSDL está la carpeta raíz del servidor, pero el archivo PHP está dentro de
ws/ ... corrígelo según tus valores.
Por último, en tu cliente pasa como opciones esa misma URL y el namespace que declaras en tu WSDL. Esto es, algo como:
Código PHP:
Ver original<?php
$client = new SoapClient("http://10.132.44.205/catalog.wsdl",
array('location' => 'http://10.132.44.205/ws/soap-server.php', 'uri' => 'urn:localhost-catalog'));
$catalogId='catalog2';
$response = $client->getCatalogEntry($catalogId);
echo $response;
Ah, y un detalle: en tu servidor no utilices las llaves de cierre de PHP (
?>), evita espacios que puedan ser enviados sin querer, y en tu cliente asegúrate no tengas nada antes de
<?php que según el mensaje de error se produce en la línea 5, cuando según tu código en esa línea se hace el
echo ... el error debería producirse en la llamada a la función. Si en efecto no tienes nada antes de
<?php, quizá tu editor esté agregando el BOM ... ¿qué editor estás usando?
![Pensando](http://static.forosdelweb.com/fdwtheme/images/smilies/scratchchin.gif)
...
Un saludo