Tengo el siguiente problema al crear un WS con php5, y llevo estancado con el 2 días, agradecería si pueden darme alguna indicacion.
Lo primero mi código:
-------------------------------------
Código PHP:
<?php
// datos
$wsdl = "https://pre-afirma.redinteradministrativa.es/afirmaws/services/ValidarFirma?wsdl";
$idAplicacion = "appPrueba";
$firma_electronica = "abcd";
$formato_firma = "PKCS7";
$hash = "";
$algoritmo_hash = "";
$datos = "abcd";
// parametros WS Soap Validar Firma
$params = Array (
"idAplicacion" => $idAplicacion ,
"firmaElectronica" => $firma_electronica,
"formato_firma" => $formato_firma ,
"hash" => $hash,
"algoritmo_hash" => $algoritmo_hash ,
"datos" => $datos
);
// cliente
$client = new SoapClient(
NULL ,
array( "location" => $wsdl ,
"uri" => $wsdl ,
"trace" => 1 ,
"cache_wsdl" => 0
));
//llamada al metodo ValidarFirma
try
{
$client->__soapCall (
"ValidarFirma" ,
$params
);
}
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
echo "\n\nREQUEST:\n" . $client->__getLastRequest() . "\n";
?>
Este código invoca a un servicio cuyo WSDL no esta visible al público, pero que yo si puedo verlo y cuya descipción es la siguiente:
-------------------------------------
Código:
-------------------------------------<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://afirmaws/services/ValidarFirma" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://afirmaws/services/ValidarFirma" xmlns:intf="http://afirmaws/services/ValidarFirma" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsfirma="http://afirmaws/ws/firma" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!--WSDL created by Apache Axis version: 1.3 Built on Oct 05, 2005 (05:23:37 EDT)--> <wsdl:types> <xs:schema targetNamespace="http://afirmaws/ws/firma" xmlns:wsfirma="http://afirmaws/ws/firma" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!--PETICION--> <!-- Definicion Elementos Simples --> <xs:group name="IdAplicacion"> <xs:sequence> <xs:element name="idAplicacion" type="xs:string"/> </xs:sequence> </xs:group> <xs:group name="FirmaElectronica"> NOTA : no puedo adjuntar todo el wsdl por que es demasiado largo </wsdl:service> </wsdl:definitions>
Este wsdl tiene la siguiente linea:
<xs:schema targetNamespace="http://afirmaws/ws/firma" xmlns:wsfirma="http://afirmaws/ws/firma" xmlns:xs="http://www.w3.org/2001/XMLSchema">
Estando http://afirmaws/ no disponible.
El mensaje de peticion que forma el cliente es el siguiente :
-------------------------------------
Código:
-------------------------------------<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://pre-afirma.redinteradministrativa.es/afirmaws/xsd/mfirma/ws.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:ValidarFirma> <param0 xsi:type="xsd:string">appPrueba</param0> <param1 xsi:type="xsd:string">abcd</param1> <param2 xsi:type="xsd:string">PKCS7</param2><param3 xsi:type="xsd:string"></param3><param4 xsi:type="xsd:string"></param4><param5 xsi:type="xsd:string">abcd</param5></ns1:ValidarFirma></SOAP-ENV:Body></SOAP-ENV:Envelope>
El error que me devuelve el servicio es que no recibe los parametros. Entiendo que en mi xml en las etiquetas <param> deberían contener algún atributo id="nombrevariable", para que el WS pudiera identificarlas.
Es posible que este error se deba a la no disponibilidad de la URL que se expecifica en targetNamesPaces, estoy cometiendo algún error.
Alguna pista que puedan darme?
saludos y gracias.