 |
Foro en Español de Magic eDeveloper - ProaSistemas.com Magic en español, eDeveloper, iBOLT, UniPaaS, Magic Software
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Mauricio Valcarcel Magic Jr.
Registrado: 07 Jun 2007 Mensajes: 7 Ubicación: Peru
|
Publicado: Jue Oct 11, 2007 11:22 am Asunto: Web Services en Magic 9.4 |
|
|
Estoy hace ya tiempo tratando de implementar una llamada a un Web service y no encuentro la forma de hacerlo.
Tengo el siguiente servicio que ya lo he probado desde otras plataformas y funciona correctamente:
http://samples.gotdotnet.com/quickstart/aspplus/samples/services/mathservice/vb/mathservice.asmx?wsdl
Si alguien pudiera hacer un programa que llame a este Web service y devuelva la suma de dos números y me lo envia exportado me ayudaría mucho.
Yo estoy utilizando Magic 9.4 SP7d
Gracias por anticipado. |
|
| Volver arriba |
|
 |
iram79 Magic
Registrado: 01 Mar 2007 Mensajes: 67 Ubicación: México, D.F.
|
Publicado: Vie Oct 12, 2007 12:05 pm Asunto: |
|
|
Mauricio:
Existe un viejo proverbio chino que dice:
"Regala un pescado a un hombre y le darás alimento para un día, enseñale a pescar y lo alimentarás para el resto de su vida"
Así que creo mucho más conveniente explicarte como hacer este programa, que solo hacerte el programa exportado... Además, alguien puede encontrarse con este Tópico, y de algo le pudiera ayudar... asi que aqui vamos...
El Web Service al que te estás enfrentando, es de tipo Document. Los WS tipo RPC son mucho más fáciles de utilizar, puesto que envias los valores a las variables directamente.
Pero en el caso de los WS tipo Document, tienes que enviarles los valores contenidos dentro de un documento XML. En Magic, puedes generar en XML de muy distintas maneras: formas Merge, formas de texto, concatenar cadenas, generar un archivo XML y meterlo a un blob, etc...
Te voy a explicar el caso más sencillo:
1. Tienes un programa online con 3 variables virtuales BLOB, llamadas:
a) XML de Envio
b) XML de Respuesta
c) Código de Error
2. Tienes un Handler a un evento (p.ej. Handler User Action 1)
3. Dentro del Handler, defines un Call Web S
4. Al entrar a las propiedades del Call, se disparará el "WSDL Assistant", donde insertarás el URL de tu WSDL, y al cambiar de campo, verás los métodos de tu Web Service
5. Selecciona el método "Add" y esto te regresa a la pantalla de "Web Service Parameters"
6. En el campo Return Value, haz un zoom y selecciona el blob 'XML de Respuesta'
7. En el campo Fault, haz un zoom y selecciona el blob 'Código de Error'
8. Presiona el botón OK, y ve a la parte de 'Arg' (Arguments)
9. Dentro de los argumentos, define el blob 'XML de Envio'
10. Genera la forma, definiendo los blobs como campos RTF edit.
11. No olvides un botón que dispare el User Action 1
Y ya está listo para correr...
Una vez en ejecución, digamos que quieres sumar
A=5.5
B=8.2
En el blob XML de Envio, insertas el siguiente código XML:
| Código: | <?xml version="1.0"?>
<tns:Add xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://tempuri.org/">
<tns:A>5.5</tns:A>
<tns:B>8.2</tns:B>
</tns:Add> |
Este código se puede obtener a partir de los XSD que te obtiene el WSDL Assistant de Magic.
Cuando presiones el botón para llamar al WS, obtendrás el resultado, tambien contenido en un documento XML. por ejemplo:
| Código: | <AddResponse xmlns="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AddResult>13.7</AddResult>
</AddResponse> |
Para extraer el resultado de dicho XML, puedes usar la función XMLGet.
No es muy complicado hacer esto... solo hay que saber como funcionan las cosas y no depender tanto de los asistentes...
Saludos... _________________ Ing. Ivan Eli Ramirez Herrera
Consultor de Software
ROCA Sistemas SA de CV
-----------------------------------------
Siempre existe más de una manera de hacer las cosas.
La genialidad proviene de escoger la que mejor convenga... |
|
| Volver arriba |
|
 |
alexmtz213 Magic

Registrado: 01 Mar 2007 Mensajes: 85 Ubicación: Monterrey, NL. Mexico
|
Publicado: Vie Oct 12, 2007 12:38 pm Asunto: |
|
|
Excelente respuesta iram79. Gracias por el aporte.
Saludos!!!!
 |
|
| Volver arriba |
|
 |
|
|
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
|
Powered by phpBB © 2001, 2005 phpBB Group
|