Perdón por la omisión
El archivo WSDL es solo una parte de todo el servicio web, a continuación pongo el código del archivo "catalog.wsdl"
El código del servidor "soap-server.php"
Código:
<?php
function getCatalogEntry($catalogId) {
if($catalogId=='catalog1')
return '<?xml version="1.0"?>
<reservation_response><order><code>GDLA4E-37</code><date>2009-12-06</date><package>100% TEQUILA Y AVENTURA> EL AGUACATILLO</package><total>3366</total></order></reservation_response>';
elseif ($catalogId='catalog2')
return '<?xml version="1.0"?>
<reservation_response><order><code>GDLA4E-37</code><date>2009-12-06</date><package>100% TEQUILA Y AVENTURA> EL AGUACATILLO</package><total>3366</total></order></reservation_response>';
}
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("catalog.wsdl");
$server->addFunction("getCatalogEntry");
$server->handle();
?>
Y el del cliente "soap-client.php"
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:
Código:
Fatal error: Uncaught SoapFault exception: [Client] DTD are
not supported by SOAP in C:\xampp\htdocs\soap-client.php:5
Stack trace: #0 [internal function]: SoapClient->__call('getCatalogEntry',
Array) #1 C:\xampp\htdocs\soap-client.php(5):
SoapClient->getCatalogEntry('catalog2') #2 {main} thrown in
C:\xampp\htdocs\soap-client.php on line 5
Este mismo problema lo subí a un foro en meetup.com (The Los Angeles PHP Developers Meetup Group) y la respuesta final parece ser "El servidor, de alguna manera, no quiere servir el WSDL"
Es por eso que estoy tratando de aislar el problema, esperando que si se resuelve esto, todo lo demás funcione (o de plano se descarte)