• Publicidad

Consumo de WebService

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Consumo de WebService

Notapor wolfantec » 2013-08-23 17:07 @755

Estimados,

Estoy programando un cliente para un webservice muy simple. uso las librerías SOAP::Lite.
El webservice recibe la cadena que envío y me responde la cadena más un literal.
Si la cadena es NULL me responde: "error; cadena vacía".

El problema que tengo es que siempre que le mando un dato, me responde que la cadena esta vacía.

Les adjunto el código, el esquema del webservice, y la salida.

¿Me pueden decir qué estoy haciendo mal para que el webservice no tome la cadena?
Saludos,

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. #Librerías para usar
  4. use strict;
  5. use Data::Dumper;
  6. #Librerías para <span class="posthilit">SOAP</span>
  7. use <span class="posthilit">SOAP</span>::Lite;
  8.  
  9. my $text="Answer:t5:1:t8:83529214031:t14:011593994999852:HangUp";
  10. my $realvalue = <span class="posthilit">SOAP</span>::Data
  11.         ->name('cadena')
  12.         ->type('string')
  13.         ->value($text);
  14.  
  15. my $<span class="posthilit">soap</span> = <span class="posthilit">SOAP</span>::Lite
  16.         -> uri('http://webservice.satix.supertel.gob.ec/')
  17.         -> proxy('http://192.168.0.213:7001/satix/ReceptorCadenaMarcadoService')
  18.         -> recibirCadenaMarcado($realvalue)
  19.         -> result;
  20.  
  21. #dump de la variable para test
  22. my $dump= Data::Dumper->new([$realvalue],[qw(realvalue)]);
  23. print $dump->Dump;
  24.  
  25. print $<span class="posthilit">soap</span>;
  26.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Esquema del WS.
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.6hudson-86  svn-revision#12773. -->
  2. <xsd:schema targetNamespace="http://webservice.satix.supertel.gob.ec/">
  3. <xsd:complexType name="recibirCadenaMarcado">
  4.   <xsd:sequence>
  5.     <xsd:element name="cadena" type="xsd:string" minOccurs="0"/>
  6.   </xsd:sequence>
  7. </xsd:complexType>
  8. <xsd:complexType name="recibirCadenaMarcadoResponse">
  9.   <xsd:sequence>
  10.     <xsd:element name="return" type="xsd:string" minOccurs="0"/>
  11.   </xsd:sequence>
  12. </xsd:complexType>
  13. <xsd:element name="recibirCadenaMarcado" type="ns0:recibirCadenaMarcado"/>
  14.   <xsd:element name="recibirCadenaMarcadoResponse" type="ns0:recibirCadenaMarcadoResponse"/>
  15. </xsd:schema>
  16.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La salida de mi programa, con el dump que hago a la variables es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. [root@localhost ~]# ./TestSoap.pl
  2. $realvalue = bless( {
  3.                       '_name' => 'cadena',
  4.                       '_type' => 'string',
  5.                       '_signature' => [
  6.                                         'cadenastring'
  7.                                       ],
  8.                       '_value' => [
  9.                                     'Answer:t5:1:t8:83529214031:t14:011593994999852:HangUp'
  10.                                   ],
  11.                       '_attr' => {}
  12.                     }, '<span class="posthilit">SOAP</span>::Data' );
  13. error; cadena vacía
  14.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
wolfantec
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2013-08-23 14:36 @650

Publicidad

Re: Consumo de WebService

Notapor explorer » 2013-08-23 21:00 @917

Bienvenido a los foros de Perl en Español, wolfantec.

Mira la documentación de SOAP::Trace. Verás que poniendo

use SOAP::Lite +trace => 'all';

en el programa, activas el trazado de la ejecución, y así tendrás más pistas de lo que puede estar pasando (o poniendo 'debug' en lugar de 'all', que quizás sea demasiado).

Por estos foros hay 78 mensajes que hacen referencia a SOAP. Recuerda usar el sistema de búsqueda.

Creo que el problema está en lo que dice el esquema: "cadena" es una cadena de caracteres, pero está dentro de un tipo complejo llamado "recibirCadenaMarcado", así que a lo mejor es eso lo que hay que indicar...

No sé... yo estoy perdido con estos temas, hace mucho que no los sigo. En este hilo recomiendan el uso de SOAP::WSDL, ya que solo tenemos que darle como parámetro de entrada el WSDL que nos dan, y el módulo se encarga de crear las estructuras y métodos Perl que remedan ese WSDL, con lo que solo tenemos que hacer las llamadas a los servicios.

Prueba también a mandarle algún mensaje a alguno de los autores de los mensajes de los hilos que hablan de SOAP, en estos foros, como por ejemplo, scout, ya que ellos tendrán más ideas.
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 Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados