• Publicidad

Webservice SOAP::Lite con autenticación

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Webservice SOAP::Lite con autenticación

Notapor teco000 » 2009-06-09 13:30 @604

Saludos. No sé si me pueden ayudar. Necesito hacer un cliente que se conecta a un webservice HTTPS con autenticación SSL, pero no me funciona; no sé si me pueden ayudar diciendo dónde está mi error
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use SOAP::Lite 'trace', 'debug';
 
SOAP::Lite->soapversion('1.2');
sub SOAP::Transport::HTTP::Client::get_basic_credentials {
  return 'user' => 'passwd';
}

my $result = SOAP::Lite
    ->uri('https://url.go.gt')
    ->proxy('https://url.go.gt/PROXY/EstadoCuenta.asmx',  timeout => 5)
    ->ListPortfolios()
    ->result;
 
print $result;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


pero me da el siguiente mensaje:
Código: Seleccionar todo
SOAP::Transport::HTTP::Client::send_receive: HTTP/1.1 500 Internal Server Error
Cache-Control: private
Connection: close
Date: Tue, 09 Jun 2009 18:27:35 GMT
Server: Microsoft-IIS/6.0
Content-Length: 3037
Content-Type: text/html; charset=utf-8
Client-Date: Tue, 09 Jun 2009 18:24:32 GMT
Client-Peer: xxx:xxx:xxx:xxx:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /DC=local/DC=siaf-sag/CN=Proyecto SIAFSAG
Client-SSL-Cert-Subject: /C=GT/ST=Guatemala/L=Guatemala/O=Ministerio de Finanzas Publicas de Guatemala/OU=Proyecto SIAF-SAG/CN=url.gob.gt
Client-SSL-Cipher: RC4-MD5
Client-SSL-Warning: Peer certificate not verified
Title: Runtime Error
X-Powered-By: ASP.NET
Última edición por teco000 el 2010-11-08 15:22 @681, editado 2 veces en total
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Publicidad

Notapor teco000 » 2009-06-12 08:47 @407

Saludos, bueno resulto ser más fácil de lo que esperaba, y por cierto la respuesta estaba en uno de los hilos de por aquí.

Ahora tengo otro problema: no logro desplegar el resultado ni entra en el for(), pero al momento de hacer el print(Dumper) sí me despliega información.

Este es el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use SOAP::Lite +trace => [qw(debug)];
use Data::Dumper;

my $soap = SOAP::Lite->new(
    uri     =>'https://url.go.gt',
    on_action =>(sub { return '"http://url/bancos/EstadoCuenta/UploadEstado"' }),
    proxy   => 'https://url.go.gt/ProxyBancos/srvEstado.asmx?WSDL' ,
);
my $response  = $soap->srvEstado({
'strUsuario'    =>'xxxxxx',
'strClave'      => 'xxxxxx',
'strXMLEntrada' => 'dfdfddffdfCRETO',
});
my %resultado = %{$response->result()};
for my $item (keys %resultado) {
    print "$item : $resultado{$item}\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y me tira este resultado que es el mismo que me tira sin que ponga la parte del for()
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><namesp1:srvEstado xmlns:namesp1="https://url.gob.gt"><c-gensym3><strXMLEntrada xsi:type="xsd:string">dfdfddffdfCRETO</strXMLEntrada><strUsuario xsi:type="xsd:string">xxxxxx</strUsuario><strClave xsi:type="xsd:string">xxxxxx</strClave></c-gensym3></namesp1:srvEstado></SOAP-ENV:Body></SOAP-ENV:Envelope>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Código: Seleccionar todo
SOAP::Transport::HTTP::Client::send_receive: HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Connection: close
Date: Fri, 12 Jun 2009 13:36:46 GMT
Server: Microsoft-IIS/6.0
Content-Length: 983
Content-Type: text/xml; charset=utf-8
Client-Date: Fri, 12 Jun 2009 13:33:35 GMT
Client-Peer: xxx:xxx:xxx:xxx:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /DC=local/DC=siaf-sag/CN=Proyecto SIAFSAG
Client-SSL-Cert-Subject: /C=GT/ST=Guatemala/L=Guatemala/O=Ministerio de Finanzas Publicas de Guatemala/OU=Proyecto SIAF-SAG/CN=url.go.gt
Client-SSL-Cipher: RC4-MD5
Client-SSL-Warning: Peer certificate not verified
X-AspNet-Version: 1.1.4322
X-Powered-By: ASP.NET

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><UploadEstadoResponse xmlns="http://url/Bancos/srvEstado"><UploadEstadoResult>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;RESULTADO&gt;&lt;OPERACIONES_CARGADAS&gt;0&lt;/OPERACIONES_CARGADAS&gt;&lt;OPERACIONES_RECHAZADAS&gt;0&lt;/OPERACIONES_RECHAZADAS&gt;&lt;MOVIMIENTOS&gt;&lt;MOVIMIENTO&gt;&lt;CODIGO_BANCO&gt;&lt;/BANCO&gt;&lt;NUMERO_CUENTA&gt;&lt;/NUMERO_CUENTA&gt;&lt;FECHA_BANCO&gt;&lt;/FECHA_BANCO&gt;&lt;DOCUMENTO_BANCO&gt;&lt;/DOCUMENTO_BANCO&gt;&lt;CODIGO_RETORNO&gt;1001&lt;/CODIGO_RETORNO&gt;&lt;DESCRIPCION&gt;1001 - Datos de Autenticación Invalidos.&lt;/DESCRIPCION&gt;&lt;/MOVIMIENTO&gt;&lt;/MOVIMIENTOS&gt;&lt;/RESULTADO&gt;</UploadEstadoCuentaResult></UploadEstadoCuentaResponse></soap:Body></soap:Envelope>


Y al momento de poner el siguiente código
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print Dumper $response;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

me tira lo siguiente
Código: Seleccionar todo
$VAR1 = bless( {
                 '_content' => [
                                 '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',
                                     {},
                                     [
                                       [
                                         'UploadEstadoResponse',
                                         {
                                           'xmlns' => 'http://url/Bancos/srvEstadoCuenta'
                                         },
                                         [
                                           [
                                             'UploadEstadoResult',
                                             {},
                                             "<?xml version=\"1.0\" encoding=\"utf-16\"?><RESULTADO><OPERACIONES_CARGADAS>0</OPERACIONES_CARGADAS><OPERACIONES_RECHAZADAS>0</OPERACIONES_RECHAZADAS><MOVIMIENTOS><MOVIMIENTO><CODIGO_BANCO></BANCO><NUMERO_CUENTA></NUMERO_CUENTA><FECHA_BANCO></FECHA_BANCO><DOCUMENTO_BANCO></DOCUMENTO_BANCO><CODIGO_RETORNO>1001</CODIGO_RETORNO><DESCRIPCION>1001 - Datos de Autenticaci\x{f3}n Invalidos.</DESCRIPCION></MOVIMIENTO></MOVIMIENTOS></RESULTADO>",
                                             undef,
                                             "<?xml version=\"1.0\" encoding=\"utf-16\"?><RESULTADO><OPERACIONES_CARGADAS>0</OPERACIONES_CARGADAS><OPERACIONES_RECHAZADAS>0</OPERACIONES_RECHAZADAS><MOVIMIENTOS><MOVIMIENTO><CODIGO_BANCO></BANCO><NUMERO_CUENTA></NUMERO_CUENTA><FECHA_BANCO></FECHA_BANCO><DOCUMENTO_BANCO></DOCUMENTO_BANCO><CODIGO_RETORNO>1001</CODIGO_RETORNO><DESCRIPCION>1001 - Datos de Autenticaci\x{f3}n Invalidos.</DESCRIPCION></MOVIMIENTO></MOVIMIENTOS></RESULTADO>",
                                             '{http://url/Bancos/srvEstado}UploadEstadoResult',
                                             {}
                                           ]
                                         ],
                                         undef,
                                         {
                                           'UploadEstadoResult' => "<?xml version=\"1.0\" encoding=\"utf-16\"?><RESULTADO><OPERACIONES_CARGADAS>0</OPERACIONES_CARGADAS><OPERACIONES_RECHAZADAS>0</OPERACIONES_RECHAZADAS><MOVIMIENTOS><MOVIMIENTO><CODIGO_BANCO></BANCO><NUMERO_CUENTA></NUMERO_CUENTA><FECHA_BANCO></FECHA_BANCO><DOCUMENTO_BANCO></DOCUMENTO_BANCO><CODIGO_RETORNO>1001</CODIGO_RETORNO><DESCRIPCION>1001 - Datos de Autenticaci\x{f3}n Invalidos.</DESCRIPCION></MOVIMIENTO></MOVIMIENTOS></RESULTADO>"
                                         },
                                         '{http://url/Bancos/srvEstado}UploadEstadoResponse',
                                         {}
                                       ]
                                     ],
                                     undef,
                                     {
                                       'UploadEstadoResponse' => $VAR1->{'_content'}[2][0][2][0][4]
                                     },
                                     '{http://schemas.xmlsoap.org/soap/envelope/}Body',
                                     {}
                                   ]
                                 ],
                                 undef,
                                 {
                                   'Body' => $VAR1->{'_content'}[2][0][4]
                                 },
                                 '{http://schemas.xmlsoap.org/soap/envelope/}Envelope',
                                 {}
                               ],
                 '_current' => [
                                 $VAR1->{'_content'}
                               ]
               }, 'SOAP::SOM' );

No sé si me pueden ayudar diciéndome cómo puedo capturar la parte de <RESULTADO></RESULTADO>, ya que es sobre la cual tengo que trabajar.
Última edición por teco000 el 2010-11-08 15:25 @684, editado 2 veces en total
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Notapor explorer » 2009-06-12 13:24 @600

teco000 escribiste:Saludos, bueno resulto ser mas fácil de lo que esperaba, y por cierto la respuesta estaba en uno de los hilos de por aquí.
¡Anda!, ¿y cuál era?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor teco000 » 2009-06-12 14:41 @653

Pues lo logré poniendo en práctica lo que encontré en este hilo http://perlenespanol.com/foro/viewtopic.php?p=4580#4580 , este me sirvio para la estructura del xml hilo: http://perlenespanol.com/foro/viewtopic ... c&start=15
¿Me puedes ayudar con la parte de capturar la respuesta?
Última edición por teco000 el 2009-06-15 09:21 @431, editado 1 vez en total
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Notapor explorer » 2009-06-12 19:30 @854

Pues entonces supongo que el fallo habrá sido algo relacionado con la confección del xml... porque el hilo no hablaba de SOAP.

En cuanto a tu pregunta principal, pues lo siento, pero yo estoy muy verde en estos temas, aparte de que se me hace complicado probar esto, pues tendría que montar un servidor de prueba.

Te iba a decir que miraras el resto de hilos de SOAP, pero seguro que ya lo has hecho. Creo recordar que había un par de ellos que hablaban del acceso a los datos devueltos en el resultado, incluso cuando son datos complejos (no escalares).

Te llevo el hilo a Experto, para ver si por ahí alguien te puede ayudar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado