Hola a todos.
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.