Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/07/2012, 02:40
gustavomch
 
Fecha de Ingreso: julio-2012
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta webservice problemas al enviar un XML

Buenas,

Como todos me dirijo a vosotros para ver si alguien puede echarme una mano,

Antes de recurrir he mirado y documentado... pero no encuentro solución.

Así que pongo el código en groso modo:
Código PHP:
<?php 
require_once('lib/nusoap.php');
// La dirección donde se aloja el Webservice
$url 'http://servidor.con/wsdl'
//Creamos el Cliente NuSoap
$cliente = new nusoap_client($urlTRUE);
//nombre de funcion
$funcion 'enviarDatos';
//Cargamos el XML a Validar
$documentoXML file_get_contents("enviar.xml");
//Lo Pasamos a Base64
$documentoXML base64_encode($documentoXML); 

//Parametros a enviar al Webservice de validación + xml 
$parametros = array('Agente' => $Agente,
                    
'Clave' => $Clave
                    
'Codigo' => $codigo,
                    
"fichero_xml" => (utf8_encode($documentoXML)));    
                    
//Llamamos a la función para Validar
$resultado $cliente->call($funcion $parametros);

// Buscamos errores
$err $cliente->getError();
if (
$err) {
    
// Mostramos errores si los hay
    
echo $err;
}
//Por si quiero imprimir el arreglo en pantalla
print_r ($resultado);

echo (
$cliente->request);
/**
echo ($cliente->response);
echo ($cliente->getDebug());
**/ 
?>
Y al ejecutarlo muestra el siguiente mensaje:
Código HTML:
wsdl error: phpType is struct, but value is not an array: see debug output for 
Ahora en fichero_xml cambio y pongo
Código PHP:
//Parametros a enviar al Webservice de validación + xml 
$parametros = array('Agente' => $Agente,
                    
'Clave' => $Clave
                    
'Codigo' => $codigo,
                    
"fichero_xml" =>  arry (utf8_encode($documentoXML))); 
Ya no da error, parece que lo manda, pero el contenido de fichero_xml esta vacio.

en el request se puede ver:
Código HTML:
...
<fichero_xml></fichero_xml>
...
¿y el contenido?


con la primera versión me he dado cuenta que al cambiar fichero_xml por ficheroxml si que funciona y no da error, es decir acepta:
Código PHP:
//Parametros a enviar al Webservice de validación + xml 
$parametros = array('Agente' => $Agente,
                    
'Clave' => $Clave
                    
'Codigo' => $codigo,
                    
"ficheroxml" => (utf8_encode($documentoXML))); 
Pero claro el webservice no entiende "ficheroxml", espera "fichero_xml".


El wsdl solicita:
Código HTML:
POST /services/WS_OpenRoom.asmx HTTP/1.1
Host: servidor.con
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://servidor.con/services/enviarDatos"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Datos xmlns="http://servidor.con/services/">
      <Agente>string</Agente>
      <Clave>string</Clave>
      <Codigo>string</Codigo>
      <fichero_xml>xml</fichero_xml>
    </Datos >
  </soap:Body>
</soap:Envelope> 
Por cierto también lo he intentado sin nuSoap, de forma nativa con el PHP5, pero mismos resultados no manda y solo obtengo como respuesta FALSE ... vamos que no carga el XML.