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($url, TRUE);
//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.