Tengo algunas dudas con respecto a un servicio web que estoy implementando. Os dejo parte del código del servidor/cliente, que seguro que es más facil explicarme con él.
Servidor:
Código PHP:
$server->register('getXML', //Nombre del metodo
array (), //Parametros de entrada
array('xml1' => 'xsd:string',
'xml2' => 'xsd:string'), //Parametros de salida
"uri:$miUrl", //Namespace
"uri:$miUrl#getXML", //Soapaction
'rpc', //style
'encoded'
);
function getXML ()
{
//URL donde se encuentra el XML
$pathxml = './XML/XML1.xml';
$pathxml2 = './XML/XML2.xml';
if (file_exists($pathxml) && file_exists($pathxml2)) {
$xml = cargarXML($pathxml);
$xml2 = cargarXML($pathxml2);
} else {
echo "No se encuentra el fichero XML <br />";
}
$respuesta = array(new soapval('xml1', 'xsd:string', base64_encode($xml)), new soapval('xml2', 'xsd:string', base64_encode($xml2)));
//Como $xml es un string, el tipo de datos del valor de sopa es xsd:string
return $respuesta;
}
Código PHP:
$parametros = array();
//1. Llamar a la funcion getXML del servidor
$result = $client->call(
'getXML', //Metodo a llamar
$parametros, //Parametros de entrada
"uri:$server_url/$server_script", //Namespace
"uri:$server_url/$server_script#getXML" //Soapaction
);
if (isset($result)) //ESTO NO SE SI ESTARÁ BIEN
{
$string_dec = base64_decode($result[0]);
$sxml = simplexml_load_string($string_dec);
$dom = importarSimpleXML($sxml);
$string_dec = base64_decode($result[1]);
$sxml = simplexml_load_string($string_dec);
$dom2 = importarSimpleXML($sxml);
}
El Servidor publica un servicio que devuelve dos XML codificados como strings, y tengo dos dudas:
1. La funcion getXML() devuelve un array ($respuesta) con los dos strings, pero al publicar el servicio, hay que hacer alguna referencia a $respuesta? O Está correctamente hecho en el código?
2. Cuando el cliente llama al servicio ($client->call()), se le devuelve $result. Esa variable ($result) es un array con los dos strings? Es decir, se pueden acceder a ellos como $result[0] y $result[1]?
Muchas gracias de antemano!