Estoy utilizando este módulo para acceder como cliente a un web service. Todo anda correcto, la llamada al servicio y la devolución de los datos esperados como respuesta.
Recibo los datos(los veo en el log), pero no sé cómo accederlos a partir de la variable $response. No comprendo la estructura del hash devuelta.
El único inconveniente que se me presenta es con la respuesta recibida: pongo en practica los ejemplos que presenta el autor en el CPAN, pero no logro acceder a los datos devueltos.
Parte del código es:
my $wsdl = XML::Compile::WSDL11->new(wsdl/file.wsdl);
$wsdl->importDefinitions ('wsdl/xsd_LoginTicketResponse.xsd');
my $loginCms = $wsdl->compileClient ( 'loginCms' );
# Extraer y validar la información de autorización (TA)
#----------------------------------------------------------------------------
my ($response) = $loginCms->(in0 => $CMS);
die "Lookup for failed: $response->{Fault}{faultstring}\n" if $response->{Fault};
# El problema esta aquí: ¿Cómo obtengo los valores de <source>, <destination> ,... etc ?
my $headerType = $response->{'parameters'}{'headerType'};
print " $headerType->{source} ";
print " $headerType->{'destination'}";
print " $headerType->{'uniqueId'} )";
No logro leer el valor devuelto por el web service para source, destination, etc.
¡¡¡¡¡¡¡¡¡¡¡¡¡ Muchísimas gracias !!!!!!!!!!!!!
PARTE del wsdl/file.wsdl es
<schema elementFormDefault="qualified" targetNamespace="http://wsaa.view.sua.dvadac.desein.afip.gov" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="https://wsaahomo.afip.gov.ar/ws/services/LoginCms"/>
<element name="loginCms">
<complexType>
<sequence>
<element name="in0" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="loginCmsResponse">
<complexType>
<sequence>
<element name="loginCmsReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefault="qualified" targetNamespace="https://wsaahomo.afip.gov.ar/ws/services/LoginCms" xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="LoginFault">
<sequence/>
</complexType>
<element name="fault" type="impl:LoginFault"/>
</schema>
</wsdl:types>
<wsdl:message name="loginCmsRequest">
<wsdl:part element="tns1:loginCms" name="parameters"/>
</wsdl:message>
<wsdl:message name="LoginFault">
<wsdl:part element="impl:fault" name="fault"/>
</wsdl:message>
<wsdl:message name="loginCmsResponse">
<wsdl:part element="tns1:loginCmsResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="LoginCMS">
<wsdl:operation name="loginCms">
<wsdl:input message="impl:loginCmsRequest" name="loginCmsRequest"/>
<wsdl:output message="impl:loginCmsResponse" name="loginCmsResponse"/>
<wsdl:fault message="impl:LoginFault" name="LoginFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="LoginCmsSoapBinding" type="impl:LoginCMS">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="loginCms">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="loginCmsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="loginCmsResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="LoginFault">
<wsdlsoap:fault name="LoginFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="LoginCMSService">
<wsdl:port binding="impl:LoginCmsSoapBinding" name="LoginCms">
<wsdlsoap:address location="https://wsaahomo.afip.gov.ar/ws/services/LoginCms"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
PARTE del Schema
<xsd:element name="loginTicketResponse" type="loginTicketResponse" />
<xsd:complexType name="loginTicketResponse">
<xsd:sequence>
<xsd:element name="header" type="headerType" minOccurs="1" maxOccurs="1" />
<xsd:element name="credentials" type="credentialsType" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="version" type="xsd:decimal" use="optional" default="1.0" />
</xsd:complexType>
<xsd:complexType name="headerType">
<xsd:sequence>
<xsd:element name="source" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="destination" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="uniqueId" type="xsd:unsignedInt" minOccurs="1" maxOccurs="1" />
<xsd:element name="generationTime" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
<xsd:element name="expirationTime" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="credentialsType">
<xsd:sequence>
<xsd:element name="token" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="sign" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>