Página 1 de 1

Uso de SOAP::Data::ComplexType

NotaPublicado: 2006-07-18 05:45 @281
por sirwallo
Hola
Estoy escribiendo un pequeño servicio web, este este servicio debe devolver un tipo de datos complejo definido en wsdl:

<xsd:complexType name="Mensaje_vuelta">
<xsd:element name="resultado" type="xsd:string"/>
<xsd:element name="mensaje_error" type="xsd:string"/>
</xsd:complexType>

El problema es que no se como devolver este tipo de datos desde mi servicio web (creado en perl).
He estado mirando y que para hacer esto se puede utilizar el modulo SOAP::Data::ComplexType pero el problema es que he estado viendo la documentacion de este modulo y no me aclaro de como utilizarlo, no se si lo he dicho es que soy un poco novato en esto de perl.

Un saludo y gracias por anticipado

NotaPublicado: 2006-07-18 06:24 @308
por explorer
Suponiendo que usas SOAP::Lite, puedes crear datos complejos con objetos SOAP::Data (http://search.cpan.org/dist/SOAP-Lite/l ... PLEX_TYPES)

En tu caso, sería:
Código: Seleccionar todo
SOAP::Data->name (
    'Mensaje_vuelta' => \SOAP::Data->value (
        SOAP::Data->name ( 'resultado' => 'el resultado' ),
        SOAP::Data->name ( 'mensaje_error' => 'el mensaje de error'),
    )
);

Revisa los ejemplos que hay en SOAP::Data.

Actualización: Corregido el error.

NotaPublicado: 2006-07-19 02:25 @142
por sirwallo
Gracias explorer
Me habia cegado con lo de utilizar el conplex-type y se me habia pasado la posibilidad de usar SOAP::Data y mira que lo estuve mirando, voy a probarlo y ya te cuento y de nuevo muchas gracias por tu rapidez.

Un saludo

NotaPublicado: 2006-07-19 03:33 @190
por sirwallo
Hola Explorer
He probado el codigo que me enviaster y el mensaje soap que me devuelve con la respuesta es

Código: Seleccionar todo
<Mensaje_vuelta>
            <resultado xsi:type="xsd:string">el resultado</resultado>
            <resultado xsi:type="xsd:string">mensaje_error</resultado>
            <resultado xsi:type="xsd:string">el mensaje de error</resultado>
</Mensaje_vuelta>


y lo que yo estoy intentando que me devuelva es

Código: Seleccionar todo
<Mensaje_vuelta>
   <resultado xsi:type="xsd:string">OK</resultado>
   <mensaje_error xsi:type="xsd:string">no se ha enviado en numero de telefono</mensaje_error>
</Mensaje_vuelta>


Voy a intentar haber si lo consigo ya contare si he tenido suerte

Lo conseguiiiiiiiiiiii

NotaPublicado: 2006-07-19 03:52 @203
por sirwallo
Bueno pues al final lo he conseguido utilizando SOAP::Data el codigo utilizado es
Código: Seleccionar todo
my $mensaje =SOAP::Data->name('Mensaje_vuelta' => \SOAP::Data->value(SOAP::Data->name('resultado' => '123')->type('string')
      ,SOAP::Data->name('mensaje' => 'eeeeeeeeeee')->type('string')));



y esto me devuelve
Código: Seleccionar todo
<Mensaje_vuelta>
   <resultado xsi:type="xsd:string">123</resultado>
   <mensaje xsi:type="xsd:string">eeeeeeeeeee</mensaje>
</Mensaje_vuelta>

NotaPublicado: 2006-07-19 04:12 @217
por explorer
Efectivamente, el código estaba mal. Ya lo he cambiado.