Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/06/2009, 10:27
Avatar de Llave
Llave
 
Fecha de Ingreso: abril-2005
Ubicación: Galicia
Mensajes: 52
Antigüedad: 19 años
Puntos: 1
Como enviar un XML como request en NuSOAP.

Hola.

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>"
Pero no sé como hacerlo (o sea...) no sé cómo modificar el call para añadir el xml directamente (en plan Request).
¿Alguien puede orientarme sobre esta segunda solución?
Gracias.

Última edición por Llave; 03/06/2009 a las 10:29 Razón: corrijo errores de acentuación.