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

Bueno. Al final unos amigos me han acabado ayudando.
Dejo por aquí la solución que hallamos por si le sirve a más gente.

Código PHP:
// Añadimos la librería nuSOAP. Que es la que utilizaremos.
require_once("nusoap/lib/nusoap.php");

// Indicamos donde está el WSDL en nuestro disco o ruta externa.
$wsdl "./rutadelfichero.WSDL";
             
// Instanciamos la clase.
$oSoapClient = new nusoap_client($wsdltrue);

// Después de instanciar la clase, debemos asignar los siguientes namespaces.
$oSoapClient->namespaces = array(
     
'soapenv' => "http://schemas.xmlsoap.org/soap/envelope/",
     
'tg' => "http://www.rutadeltg.com/xml/tgweb",
     
'asi' => "http://rutadelasi/asi/"
);


/* si el WS no está hecho en PHP podría rechazar los métodos implementados.
Para evitar este problema le mandamos el XML directamente. */
$cadena =  '<asi:etiqueta><tg:Bebidas><tg:Refresco>LIMON</tg:Refresco></tg:Bebidas></asi:etiqueta>';
            
// El último parámetro es para evitar que pille el NameSpace por defecto del NuSOAP, que es http://tempuri.org
$respuesta $oSoapClient->call("bebidas"$cadena"");

// Miramos si hubo algún error.
if ($oSoapClient->getError())
{
    echo 
"<br/><br/>Error al llamar el metodo<br/> ".$oSoapClient->getError();
}
else
{
    
// La carga fue bien y tenemos datos en $respuesta.

Edito para añadir que esta solución lo que hace es "pasar" de la comunicación mediante métodos al WS en SOAP y le enviamos directamente el XML. De esa forma sabíamos que iba a funcionar sí o sí.
No es elegante, pero funciona.

Última edición por Llave; 10/07/2009 a las 04:33 Razón: Explico lo que difiere del comportamiento normal de un SOAP.