Llevo varios días rompiéndome la cabeza contra un problema y no le doy hallado solución. A ver si me podeis ayudar.
Tengo que conectarme con un WebService (lo llamaré WS) que contiene una base de datos de información.
Como datos, tengo un punto de entrada (EndPoint) wsdl, un método ("bebidas") y un parámetro ("refresco"). Enviando el string "limon", el WS me devuelve la composición de un refresco de limon en XML.
El servidor donde está alojada la web, que contiene el php con el que tengo que hacer la petición, es php 5.
Me he decidido a usar NuSOAP en vez de la SOAP nativa de php 5, porque la cantidad de datos que me devuelve el WS es brutal. Y NuSOAP organiza en array asociativo los datos de entrada y me permite un fácil manejo de ellos.
El código que tengo ahora mismo es tal que así (lo he limpiado un poco quitando comprobaciones de error).
Código PHP:
require_once("nusoap/lib/nusoap.php");
$wsdl = "http://www.rutadelwsdl/start.swe?SWEExtSource=SecureWebService&SWEExtCmd=Execute";
// Instancio la clase.
$oSoapClient = new nusoap_client($wsdl, "wsdl");
// Declaro parámetros. En mi caso parámetro.
$aParametros = array("refresco" => "limon");
$respuesta = $oSoapClient->call("bebidas", $aParametros);
if ($oSoapClient->fault)
{
echo "Error al llamar el metodo<br/> ".$oSoapClient->getError();
}
else
{
echo $respuesta;
echo "Todo fue sin errores";
}
Bien, el código no falla. Pero no me devuelve nada. Sólo veo por pantalla "Todo fue sin errores". He probado a ver el código fuente del resultado y sólo aparece la cadena de texto.
Con soapUI, mandando una petición en XML (todas las etiquetas a piñón) consigo la respuesta, así que el WS funciona.
Me han comentado de todo: Que si puede haber conflicto de NuSOAP con las nativas de PHP5 y que desactive estas últimas (eso no lo probé aún), que si php da problemas con algunos WS...
El caso es que no me funciona y no sé por qué. ¿Alguna idea?
Otro caso que me comentaron es enviar la petición XML directamente al WS. Es decir, tener una variable estilo:
Código PHP:
$peticionXML = "<etiqueta><etiqueta2><etiqueta3>limon</etiqueta3></etiqueta2></etiqueta1>";
¿Alguien puede orientarme sobre esta segunda solución?
Gracias.