Altova MapForce 2023 Enterprise Edition

Este ejemplo sirve para explicar cómo se llama a un servicio web HTTP genérico desde MapForce. La descripción del servicio web al que se llama en este ejemplo puede encontrarse en https://services.faa.gov/docs/services/airport/#airportStatus. Este servicio web devuelve el estado actual de cualquier aeropuerto de EE UU en forma de estructura XML o JSON y acepta el código de tres letras del aeropuerto como argumento (p. ej. "SFO", "IAD", "ABE", "DFW", etc.). El ejemplo viene acompañado de un archivo de diseño de asignación de datos que está en esta carpeta: <Documentos>\Altova\MapForce2023\MapForceExamples\AirportStatus.mfd .

 

En este ejemplo, la respuesta del servicio web está en formato JSON y se asigna a un archivo JSON. Por tanto, necesitaremos el esquema JSON de la estructura de respuesta del servicio web. En este caso, hemos generado el esquema JSON con XMLSpy, a partir de un ejemplo de respuesta que ofrece el proveedor del servicio web. Encontrará este esquema en la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\AirportStatus.schema.json.

 

Para la parte de la solicitud vamos a llamar al servicio web con un parámetro que aportará el valor "SFO" en la solicitud. Para la parte de la respuesta vamos a asignar los datos de la respuesta a un archivo JSON. Por tanto, la asignación de datos estará compuesta por tres componentes principales: la llamada al servicio web, el parámetro de entrada y el archivo JSON de salida.

 

Paso nº1: agregar el componente de servicio web

1.Asegúrese de que el lenguaje de transformación de la asignación de datos es BUILT-IN.

2.En el menú Insertar haga clic en el comando Función de servicio web.

3.En el grupo de opciones Definición del servicio elija la opción Manual.

4.Elija el método de solicitud GET y defina la URL https://soa.smext.faa.gov/asws/api/airport/status/{airportCode}. El valor que aparece entre llaves es un parámetro plantilla que se reemplazará con el código del aeropuerto en tiempo de ejecución (véase Agregar llamadas a servicios web (de tipo REST)).

5.Haga clic en el botón Agregar parámetro ic_paramadd y añada un parámetro nuevo a la tabla Parámetros. Observe que el nombre del parámetro debe ser idéntico al del parámetro que se especifica entre llaves en la URL. Establezca el estilo Plantilla, elija el tipo Cadena y marque las casillas Asignable y Obligatorio. El campo Descripción puede dejarse vacío porque es opcional.

6.Ahora añada un encabezado para decirle al servidor web que el cliente (es decir, MapForce) espera JSON en la respuesta. Para añadir el encabezado haga clic otra vez en el botón Agregar parámetro ic_paramadd, añada un parámetro llamado Accept, defina el estilo Encabezado e introduzca el valor fijo application/json.

mf_airportstatus_01

7.En el grupo de opciones Respuesta haga clic en el botón Editar y navegue hasta el esquema de la respuesta del servicio web. El esquema está en la ruta de acceso <Documentos>\Altova\MapForce2023\MapForceExamples\AirportStatus.schema.json.

mf_airportstatus_02

8.Haga clic en Aceptar para terminar. Ahora área de asignación incluye un servicio web.

mf_airportstatus_03

 

Paso nº2: agregar el parámetro de entrada

1.En el menú Insertar haga clic en el comando Insertar componente de entrada.

2.Introduzca el nombre de parámetro airportCode y desactive la casilla Requiere una conexión de entrada (porque la entrada vendrá dada por una constante, como se explica en el paso siguiente).

mf_airportstatus_04

3.Añada una constante (con el comando de menú Insertar | Constante) con el valor SFO y conéctela al parámetro de entrada.

4.Conecte la salida del parámetro airportCode a la entrada de la solicitud, como muestra la siguiente imagen.

mf_airportstatus_05

Ya está lista la parte de solicitud del servicio web. Cuando se ejecute la asignación, se llamará al servicio web con el valor que viene dado por la constante (en este caso SFO).

 

Paso nº3: agregar la salida JSON

1.En el menú Insertar haga clic en el comando Archivo o esquema JSON.

2.Navegue hasta el esquema <Documentos>\Altova\MapForce2023\MapForceExamples\AirportStatus.schema.json y haga clic en Abrir.

3.Cuando la aplicación solicite un archivo JSON de muestra, haga clic en Omitir (el archivo JSON de muestra no es necesario porque la aplicación generará uno).

4.En el menú Conexión compruebe que está activado el comando Conectar automáticamente los secundarios equivalentes.

5.Conecte el nodo object del cuerpo de la respuesta del servicio web al nodo object del componente JSON, tal y como muestra la siguiente imagen. Como el comando Conectar automáticamente los secundarios equivalentes está activado, todos los nodos descendientes se conectan automáticamente.

mf_airportstatus_06

 

Paso nº4: ejecutar la asignación

Ahora ya puede llamar al servicio web. Haga clic en el panel Resultados para ejecutar la asignación y consultar la vista previa del resultado que se genera. Si la llamada al servicio web se ejecuta correctamente, en el panel Resultados aparecerá la estructura JSON que se devuelve. Si la llamada no se ejecuta correctamente, MapForce devolverá un mensaje de error. Tal y como se indicó en la descripción del servicio web, si en caso de respuesta de error, se devuelve el código HTTP 500. También puede recibir el código HTTP 404 si no hay disponible información sobre los retrasos.

 

Si tiene  MapForce Server (https://www.altova.com/es/mapforce/mapforce-server.html), también puede compilar la asignación en un archivo de ejecución (*.mfx) y ejecutar este archivo desde la línea de comandos o desde la API de MapForce Server en el equipo servidor donde se ejecuta MapForce Server (véase Compilar asignaciones en archivos de ejecución de MapForce Server).

 

En resumen, ya sabe crear una llamada a servicio web HTTP genérico que utiliza un método GET para recuperar datos de estado de los aeropuertos en tiempo real. Para más información consulte el apartado Agregar llamadas a servicios web (de tipo REST).

© 2017-2023 Altova GmbH