Ejemplo: llamar a un servicio web SOAP
En este ejemplo aprenderá a consultar un servicio web de hora usando como entrada una constante. El servicio web propiamente dicho se implementó con ayuda de MapForce, pero puede implementarlo con cualquier otra tecnología que admite un protocolo compatible.
La asignación de datos de este ejemplo forma parte del proyecto de asignación TimeService.mfp, disponible en la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\TimeService. El archivo de proyecto TimeService2.mfp de la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\TimeserviceWsdl2 es compatible con WSDL 2.0.
Para ver cómo se implementó el servicio web:
1. | Seleccione el comando de menú Archivo | Abrir y seleccione el archivo TimeService.mfp de la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\Timeservice. Los archivos asociados con el proyecto se cargan en la ventana Proyecto. |
2. | Haga doble clic en la entrada getCityTime.mfd de la ventana Proyecto. |
La asignación getCityTime.mfd acepta como entrada un nombre de ciudad y devuelve la hora actual en la salida. Si la ciudad no es Boston, se devuelve un error WSDL. La asignación toma los datos de entrada del archivo getCityTimeRequest.xml de la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\TimeService. Si hace doble clic en el componente getCityTimeSoapIn, verá que este archivo está configurado como origen de datos.
Para este ejemplo imaginaremos que este proyecto de servicio web ya está compilado e implementado en un servidor web real, al que llamaremos en los siguientes pasos del ejemplo. Hemos creado un servicio en línea de ejemplo en http://nanonull.com/TimeService/TimeService.asmx. Para ver más ejemplos de cómo crear este tipo de servicios web con MapForce, consulte los apartados Ejemplo: generar servicios web SOAP (C#) y Ejemplo: generar servicios web SOAP (Java).
Para llamar a la función de servicio web "getCityTime" desde una asignación de datos:
1.Seleccione el comando de menú Archivo | Nuevo, haga clic en el icono Asignación y confirme con el botón Aceptar.
2.Haga clic en el comando de menú Insertar | Función de servicio web... o en el botón de la barra de herramientas.
3.Haga clic en Examinar para seleccionar el archivo de definición WSDL. Seleccione el archivo TimeService.wsdl del directorio TimeService y haga clic en el botón Abrir.
4.Cuando la aplicación solicite el extremo del servicio web, elija el extremo TimeServiceSoap.
5.Cuando la aplicación solicite una operación de servicio web, elija la operación getCityTime.
6.Deje las opciones predeterminadas de la configuración de la llamada WSDL como están y haga clic en Aceptar (véase Configurar llamadas a servicios web).
La función de servicio web getCityTime se inserta en forma de componente, pero recuerde que realmente representa los ocho componentes que forman el archivo getCityTime.mfd que está guardado en el proyecto WSDL.
La sección izquierda del componente define la entrada de datos (SoapIn), mientras que la derecha define la salida de datos (SoapOut), que también puede incluir una sección de error si así se definió en el archivo .wsdl.
Para llamar al servicio web:
1. | Inserte el componente que aportará los datos de entrada (p. ej. un componente de constante, texto o esquema). Para este ejemplo insertaremos un componente de constante con el valor de cadena Boston. |
2. | Conecte la constante al elemento n0:city. |
3. | Inserte un componente de salida simple (con el comando de menú Función | Insertar componente de salida). |
4. | Conecte el elemento n0:getCityTimeResult al componente de salida. |
5. | Haga clic con el botón derecho en el componente "getCityTime" y seleccione Propiedades. Se abrirá el cuadro de diálogo de configuración de la llamada al servicio web. Introduzca en el campo URL http://nanonull.com/TimeService/TimeService.asmx (un servicio web de ejemplo creado con MapForce; véase el apartado Implementar servicios web SOAP). |
6.Haga clic en la pestaña Resultados. Como se ve en la imagen siguiente, en el panel Resultados aparecerá la hora actual en Boston.
Nota: | el valor de entrada de la función de servicio web tiene prioridad sobre el origen de datos de la asignación original. Por ejemplo, la constante Boston tiene prioridad sobre el archivo de origen getCityTimeRequest.xml de la asignación de datos original. |
Para asignar errores de servicio web:
1.Seleccione el comando de menú Insertar | Excepción o haga clic en el botón Excepción de la barra de herramientas.
2.Asigne el elemento Error: al elemento throw del componente de excepción.
3.Asigne el elemento n0:errorText al elemento error-text del componente de excepción.